Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie Datensätze filtern (https://www.delphipraxis.net/169420-wie-datensaetze-filtern.html)

ralfiii 18. Jul 2012 16:01

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDac

Wie Datensätze filtern
 
Hallo!

Ich hab ein kleines Problem und nachdem ich nicht so der SQL-Profi bin frag ich hier mal nach (ich hab aber schon gegoogelt, keine Sorge)

Ich hab (beispielhaft) folgende Tabelle:
Code:
Name     Lang    Default   Content
first     EN        1         First content (default)
first     EN        0         First content (customized)
first     DE        1         Erster Inhalt
first     DE        0         Vom Benutzer angepasster Text für "first"
first     NL        1         Eerster inhoud
second    EN        1         Second text
third     EN        1         And a third text
D.h. die Tabelle enthält Texte (Content) in verschiedenen Sprachen (Lang) die einem internen Namen (Name) zugeordnet sind.
Es gibt Standardwerte (Default=1) die vom Benutzer überschrieben werden können (Default=0)

Ich möchte nun ein Select-Statement, bei dem jedes Name/Lang Pärchen nur einmal vorkommt, und zwar sollen die Einträge mit default=0 bevorzugt werden.

Mein "Wunsch-Ergebnis" wäre also folgendes:
Code:
Name     Lang    Default   Content
first     EN        0         First content (customized)
first     DE        0         Vom Benutzer angepasster Text für "first"
first     NL        1         Eerster inhoud
second    EN        1         Second text
third     EN        1         And a third text
Nur: Wie??!?
Ich hab schon diverse "NOT IN", "UNION" und sonstigen Konstrukte ausprobiert, aber ich find keine Lösung.

Danke!

DeddyH 18. Jul 2012 16:13

AW: Wie Datensätze filtern
 
Passt das so?
SQL-Code:
SELECT
  Name, Lang, "Default", Content
FROM
  Tabelle T1
WHERE
  T1."Default" = (
    SELECT
      MIN("Default")
    FROM
      Tabelle T2
    WHERE
      T2.Name = T1.Name
    AND
      T2.Lang = T1.Lang
  )

ralfiii 18. Jul 2012 17:05

AW: Wie Datensätze filtern
 
You're the man!!!
Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz