Join mit Default Wert aus NULL


[ ruban.de ] [ Antworten ] [ Forum ]

Geschrieben von Alexchen on Dezember 24, 2003 um 09:33:

Hallo, ich brauch schon wieder euren Rat bei den Queries. Angenommen ich habe eine Namenstabelle mit verschiedenen Sprachbezeihnungen für die Ware, wobei die Sprachangabe NULL sein kann, was bedeutet, dass die Bezeichnung für alle Sprachen genommen werden kann, soweit ein Spracheintrag für geforderte Sprache nicht existiert. Beispiel:

Table Ware
=========================
id price
1 10
2 20
3 30
4 35

Table Ware_name
=========================
id id_ware lang name
1 1 de 'ware1_de'
2 1 en 'ware1_en'
3 2 NULL 'ware2_univ'
4 3 en 'ware3_en'
5 3 NULL 'ware3_univ'
6 4 de 'ware4_de'
7 4 NULL 'ware4_univ'

Daraus muss ich jetzt nen JOIN für eine bestimmte Sprache (z.B. 'de') machen, und zwar so, dass die Sprachangaben "sinngemäß" verteilt werden:

Table Results
=========================
id price lang name
1 10 de 'ware1_de'
2 20 NULL 'ware2_univ'
3 30 NULL 'ware3_univ'
4 35 de 'ware4_de'

Kann man das eleganter machen als die folgende schon für dieses kleine Beispiel total überlagerte Query?

SELECT Ware.id, Ware.price, Ware_name.lang, Ware_name.name
FROM Ware INNER JOIN Ware_name
ON (Ware_name.id_ware=Ware.id AND (lang='de' OR lang IS NULL))
WHERE Ware_name.lang IS NOT NULL
OR Ware.id NOT IN (SELECT id_ware FROM Ware_name WHERE lang='de')


Antworten:


Schreibe eine Antwort

Name:   
E-Mail:  

Thema:

Kommentar:

Optionale Link URL:   
Link Titel:                  
Optionale Image URL:


[ Antworten ] [ Forum ]