Klaus Mock: Distinct

Beitrag lesen

Hallo,

nein. Form ist nicht eindeutig. Da kommen verschiedenen Sachen vor.

Auch mehrere pro Tab1.Name?
Wenn ja, dann mußt DU, wie schon gesagt, entweder mit allen leben, oder Dir einen Eintrag aussuchen. Welches, daß kannst nur Du wissen.

Wenn alle Stricke reißen, kannst Du es ja in zwei Statements zerlegen, eines um die Daten aus Tabelle 1  zu bekommen, und ein zweites, welches Du pro zuerstgefundenem Datensatz aufrufst. Aber auhc das ist nicht gerade elegant.
Irgendwie mußt Du Dir über die Daten, die DU da speicherst nochmals Gedanken machen. Wenn es richtig ist, daß mehrere Datensätze in Tabelle 3 für einen Datensatz in Tabelle 1 vorkommen können, dann hast Du einen Denkfehler bei Deinem aktuellen Problem. Wenn aber jeder Datensatz aus Tabelle 3 genau einem Datensatz aus Tabelle 1 entsprechen muß, dann stimmt Deine Datenerzeugung bzw. Dein Datenmodell nicht.

Da hat man nicht viele möglichkeiten, um die TAB1.Namen eideutig heraus bekommen kann ausser entweder DISTINCT oder aber Group By.
Beide funktioniren nicht ohne weiteres.

Und beide können genauso falsch, wie auch richtig sein.

Da erscheint mir Group By eine bessere lösung zu sein.

Nicht zwangsläufig, es kann auch absolut das falsche Ergebnis sein.

Da mussen aber auch nur die Felder einer Tabelle stehen, sonst knallt es auch.

Nein, es können auch durchaus Felder mehrerer Tabellen sein. Wenn es nicht funktioniert, dann hast DU ein falsches Statement formuliert.

... Feld1,Feld2 From (Select Feld3 From TAB3)

Das scheint mir falsch zu sein.
select TAB1,FELD1,TAB2.FELD2 from TAB1
join TAB2 on TAB1.KEYFELD1 = TAB2.KEYFELD2
join TAB3 on TAB2.KEYFELD2A = TAB3.KEYFELD3
where TAB3.FELD3 = 'hudriwudri'

wäre ein durchaus denkbares Statement.

Vielleicht erklärtst Du uns enmal genauer, welche Tabellenstruktur Du hast, wobei auch die Bedeutung der Tabellen und Felder nicht unbedeutend sind.
Und dann formulierst Du einmal in deutsch die Abfrage, die Du machen willst. Also irgendwie so:
'Ich will wissen welchen Namen, usw. ein Anwender hat, der folgende BEdingungen erfüllt. Außerdem sollten zu diesem Anwender noch foldene Informationen angezeigt werden, die in den Tabellen ... liegen, welche so miteinander verknüpft sind.'

Sonst bleibt es für uns einfahc nur abstrakt, was den Dialog zwischen uns einfahc nur kompliziert macht.

Grüße
  Klaus