Wenn NULL oder Leer, soll eine andere Zeile mit der ParentID abgefragt werden.

tvtotal

Erfahrenes Mitglied
Hallo zusammen,

wie im Titel schon geschrieben, möchte eine Abfrage erstellen, die über alle Spalten geht. Wenn eine bestimmte Spalte, z.B. "name", leer ist, soll die Zeile, bei der die ID mit der PARENTID übereinstimmt, abgefragt werden. Bei der Spalte attr muss ich das auch bewerkstelligen.

Sinngemäß soll es dann so aussehen.

SQL:
SELECT ALL FROM arts UND WENN name NULL ODER LEER dann SELECT name FROM arts WHERE id = "parentid dieser Zeile"

Danke & Gruß

tvtotal
 
Zuletzt bearbeitet von einem Moderator:
Nimm alle wo der Name nicht NULL ist und füge mit einem UNION die anderen an
SQL:
-- Alle bei denen der Name nicht NULL ist
SELECT 
    a.id,
    a.name
FROM 
    arts a
WHERE 
    name IS NOT NULL
-- und die bei denen der Name NULL ist
UNION ALL
SELECT 
    a.id,
    b.name
FROM 
    arts a,
    arts b
WHERE
    name IS NULL
    AND a.id = b.id

Oder noch schöner. Suche zu jedem ein sein Parent (falls vorhanden, darum der LEFT JOIN) und nimm den ersten Treffer beim Namen
SQL:
SELECT 
    a.id,
    IFNULL(a.name, IFNULL(b.name, 'na')) AS name
FROM 
    arts a,
    LEFT JOIN arts b
    ON a.id = b.id
 
Zuletzt bearbeitet von einem Moderator:
Hallo & Danke,

beim ersten bekomme ich :

Code:
Column 'name' in where clause is ambiguous

Wenn ich es ein wenig ändere (ganz unten a.name statt name), funktioniert die Abfrage, aber name bleibt leer (da, wo das Feld leer ist):

SQL:
-- Alle bei denen der Name nicht NULL ist
SELECT 
    a.id,
    a.name
FROM 
    arts a
WHERE 
    name IS NOT NULL
-- und die bei denen der Name NULL ist
UNION ALL
SELECT 
    a.id,
    b.name
FROM 
    arts a,
    arts b
WHERE
    a.name IS NULL
    AND a.id = b.id

Grüße

tvtotal

PS: Es ist übrigens MySQL
 
Zuletzt bearbeitet von einem Moderator:
Da kommt folgendes:

Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN arts b ON a.id = b.id LIMIT 0, 30' at line 6

Ich glaub, da fehlt auch die parentid.
 

Neue Beiträge

Zurück