Frage zu JOIN

patges

Mitglied
Hallo zusammen, ich habe eine kurze Frage.

Bisher hatte ich eine relativ einfache select-Abfrage über eine Tabelle gemacht, wie sich jetzt allerdings herausgestellt hat, muss ich um das gewünschte Ergebnis richtig darstellen zu lassen, diese SQL-Abfrage noch um eine Bedinung erweitern. Dieses Feld um das es in der Bedinung geht steht allerdings in einer anderen Tabelle. ich habe versucht mit einem JOIN zu arbeiten, aber irgendwie klappt das noch nicht ganz richtig.

Code:
select XXXX
from Tabelle1 INNER JOIN Tabell2 on (Tabelle1.Name = Tabelle2.Name)
where Bedinung1
and Bedingung2 (dies ist die zweite Bedinung und der überprüft ob der Wert der Spalte = 'XXX' ist)
and Bedingung3
order by Tabelle1.Name;

Ich bekomme jetzt allerdings für jeden Namen zehn Ergebnisse angezeigt, obwohl eigentlich nur ein Ergebnis pro Name angezeigt werden müsste.
Vorher wurde auch nur ein Ergebnis pro name angezeigt, erst durch diese zusätzliche Bedingung ist das Ergebnis so roß geworden, Wird wohl mit meinem JOIN zusammenhängen, oder


Greetz Patges
 
Die Vermutung ist richtig. Bei einem JOIN passiert folgendes
Exitiert ein Name in Tabelle 1 2 mal und in Tabelle2 5 mal, so erzeugt der Join 10 Datensätze im Ergebnis, also alle möglichen Kombinationen.
 
Statt der Sortierung (order by Tabelle1.name) kannst Du auch nach diesem Feld gruppieren (group by Tabelle1.name). Es wird dann ebenfalls nach dem Namen sortiert, die Ergebnisse werden jedoch auch nach dem Namen gruppiert. Du erhältst also pro Name nur eine Zeile. Deine Bedingung bezüglich Tabelle2 wird auf alle Zeilen angewendet. Sollte die Bedingung in einer (der ursprünglich 10 Zeilen pro Name) wahr sein, so ist sie für den Namen wahr und Du erhältst für diesen Namen eine Ergebniszeile.
 
Zurück