[MySQL] Mehrfachrückgabe bei SELECT-Abfrage zweier Tabellen verhindern

27apricot

Erfahrenes Mitglied
Hallo,

ich habe eine Abfrage von zwei Tabellen: »Kurse« und »Kurskategorien«. In »Kurse« steht die ID der Kurskategorie. Jedoch gibt es auch Kurse, die keiner Kategorie zugeordnet sind und somit in diesem Feld eine »0« stehen haben.
SQL:
Code:
SELECT * FROM kurse, kurse_kat
WHERE (
	kurse.id_kat = kurse_kat.id
	OR
	kurse.id_kat = 0
);
Nun ist das Problem, dass die Anfrage einen Kurs mit id_kat = 0 für jede Kategorie ausgibt, die in der Kategorie-Tabelle steht. Kann man das verhindern?

Vielen Dank im Voraus.

Schöne Grüße:
27apricot
 
Stichwort „DISTINCT“. Den Rest musst du mithilfe von Suchmaschinen oder der Forensuche selbst herausfinden.
 
Hallo Gumbo,

danke! Doof von mir. Ich hatte zwar mit DISTINCT schon erfolglos rumprobiert, und habe bis jetzt nicht rausgefunden, wie ich neben der Angabe einer DISTINCT-Spalte weitere Spalten auslese; doch gibt es ja auch noch GROUP BY, das den selben Effekt hat.

Trotzdem in dem Zusammenhang die Frage nach der SELECT-Anfrage mit DISTINCT:

»SELECT DISTINCT name_spalte FROM ...« funktioniert, es fehlen aber die Daten der anderen Spalten
»SELECT name_spalte1, DISTINCT name_spalte2 FROM ...« gibt einen MySQL-Fehler zurück und
»SELECT DISTINCT name_spalte2, name_spalte1 FROM ...« gruppiert nach beiden Spalten. Funktioniert die Anfrage nur mit einer Spalte oder gibt es eine Möglichkeit, DISTINCT zu kombinieren mit anderen Spalten?

Danke und schöne Grüße:
27apricot
 
Es ist auch möglich nur von bestimmte Spalten eindeutige Werte abzufragen, so etwa:
Code:
SELECT
        DISTINCT(`foo`),
        `bar`
  FROM
        …
 
Zurück