Hi,
ich möchte aus zwei Tabellen Daten auslesen und dann über UNION zu einer Ausgabe vereinen.
Das eigentliche Gesamtziel ist zu ermöglichen, dass von angemeldeten User und Gästen Kommentare verfasst und angezeigt werden können, wobei von den angemeldeten Usern die Namen (name) mit Hilfe der ID (user_id) aus der Tabelle a (ws_users) ausgelesen werden und die Namen der Gäste (name_anonym) aus der Tabelle b (ws_kommentare) und zwar in getrennten Feldern.
Der erste Teil der Abfrage liefert das gewünschte Ergebnis:
Es werden nur die Daten ausgegeben, bei denen die Spalte "id" aus Tabelle a den selben Wert hat, wie die Spalte "user_id" aus Tabelle b und wo zusätzlich die Spalte "name_anonym" den Wert NULL hat.
Beim zweiten Teil werden jedoch sämtliche Daten aus a.name ausgegeben und die Einschränkungen werden anscheinend ignoriert:
Eigentlich soll hier das Ziel sein, alle Spalten auszuwählen, in denen "name_anonym" aus Tabelle b nicht den Wert NULL hat und "user_id" aus Tabelle a den Wert NULL hat.
Wo könnte hier der Fehler sein?
Die zweite Abfrage funktioniert wie folgt, aber dann klappt UNION nicht, weil a.name nicht einbezogen wird:
ich möchte aus zwei Tabellen Daten auslesen und dann über UNION zu einer Ausgabe vereinen.
Das eigentliche Gesamtziel ist zu ermöglichen, dass von angemeldeten User und Gästen Kommentare verfasst und angezeigt werden können, wobei von den angemeldeten Usern die Namen (name) mit Hilfe der ID (user_id) aus der Tabelle a (ws_users) ausgelesen werden und die Namen der Gäste (name_anonym) aus der Tabelle b (ws_kommentare) und zwar in getrennten Feldern.
Der erste Teil der Abfrage liefert das gewünschte Ergebnis:
Code:
SELECT a.name AS reg_eintragsname, b.name_anonym AS unreg_eintragsname, b.kommentar, b.eintragsdatum FROM ws_users a, ws_kommentare b WHERE a.id = b.user_id AND b.name_anonym IS NULL
Es werden nur die Daten ausgegeben, bei denen die Spalte "id" aus Tabelle a den selben Wert hat, wie die Spalte "user_id" aus Tabelle b und wo zusätzlich die Spalte "name_anonym" den Wert NULL hat.
Beim zweiten Teil werden jedoch sämtliche Daten aus a.name ausgegeben und die Einschränkungen werden anscheinend ignoriert:
Code:
SELECT a.name AS reg_eintragsname, b.name_anonym AS unreg_eintragsname, b.kommentar, b.eintragsdatum FROM ws_users a, ws_kommentare b WHERE b.name_anonym IS NOT NULL AND b.user_id IS NULL
Eigentlich soll hier das Ziel sein, alle Spalten auszuwählen, in denen "name_anonym" aus Tabelle b nicht den Wert NULL hat und "user_id" aus Tabelle a den Wert NULL hat.
Wo könnte hier der Fehler sein?
Die zweite Abfrage funktioniert wie folgt, aber dann klappt UNION nicht, weil a.name nicht einbezogen wird:
Code:
SELECT b.name_anonym AS unreg_eintragsname, b.kommentar, b.eintragsdatum FROM ws_kommentare b WHERE b.name_anonym IS NOT NULL AND b.user_id IS NULL AND b.song_id = '920'
Zuletzt bearbeitet: