Komme nicht weiter mit Tabellenabfrage

zwiebel

Grünschnabel
Hey, vielleicht stelle ich mich etwas blöd an, aber ich habe noch kein Problem für meine Frage gefunden (oder ich weiß nicht genau, wonach ich suchen muss :-)
Deshalb hier meine Frage:

Ich habe eine Tabelle studiengaenge a mit mehreren Studiengängen einer Hochschule. Aus den Tabellen abschluss b und schulform c möchte ich nun in einer Abfrage den Namen des Abschlusses und (wenn vorhanden) der Schulform des in der Tabelle studiengaenge hinterlegten Studiengangs herausfinden.

Die bisherige Abfrage sieht so aus:

SELECT a.*,b.abschluss,c.schulform
FROM studiengaenge a, abschluss b, schulform c
WHERE a.studiengang = '$studiengang' AND b.id = a.abs AND c.id = a.sch

Mein Problem: Die bisherige Abfrage (s.u.) klappt prima, wenn sowohl Tabelle b und Tabelle c einen Wert > 0 enthalten. Allerdings gibt es einige Studiengänge, die nicht auf eine bestimmte Schulform ausgerichtet sind und deswegen als Inhalt '0' haben (bei Verwendung von tinyint). Da in dem Fall in der Tabelle c natürlich keine entsprechende id vorhanden ist, funktioniert die Abfrage nicht.

Gibt es eine Möglichkeit, mit der ich in beiden Fällen das richtige Ergebnis herausbekomme?
 
Ich kenn jetzt zwar die Tabellenstruktur nicht richtig, aber ich würde es mit Joins machen.

eventuell so:

SQL:
SELECT a.*, b.abschluss, c.schulform
				FROM studiengaenge a
				LEFT JOIN abschluss b ON b.id=a.abs
				LEFT JOIN schulform c ON c.id=a.sch
				WHERE a.studiengang = '$studiengang' "
 
Ich kenn jetzt zwar die Tabellenstruktur nicht richtig, aber ich würde es mit Joins machen.

eventuell so:

SQL:
SELECT a.*, b.abschluss, c.schulform
				FROM studiengaenge a
				LEFT JOIN abschluss b ON b.id=a.abs
				LEFT JOIN schulform c ON c.id=a.sch
				WHERE a.studiengang = '$studiengang' "
Das löst aber sein Problem nicht. :confused:

Vielleicht so?

SQL:
SELECT a.*,b.abschluss,c.schulform
FROM studiengaenge a, abschluss b, schulform c
WHERE a.studiengang = '$studiengang' AND b.id = a.abs AND (c.id = a.sch OR a.sch = 0)

Wenn das nicht funktionieren sollte, wäre es vielleicht ratsam, deine Tabellenstruktur hier anzugeben.
 
Vielen Dank ihr beiden. Hat leider beides nicht so geklappt, wie ich das wollte.
Bin durch beim Lesen des Beitrags von SilentWarrior aber auf eine andere Idee gekommen, die das Problem ganz einfach gelöst hat ;-)
 
Zurück