MySQL XOR

schamahn

Grünschnabel
mahlzeit,

ich habe folgendes Ziel:
Es gibt zwei Tabellen. Tabelle 'tabelle1' mit einem Feld 'label'
Das Feld 'label' (tabelle1) beinhaltet den Wert des Feldes 'Bezeichner' der 'tabelle2'.

In der 'tabelle2' sind für diesen 'Bezeichner' mehrere Einträge die sich in dem Feld 'Sprache' unterscheiden.

Tabellen-Struktur:

tabelle1
id | label

tabelle2
Bezeichner|Sprache|Wert

Nun möchte ich folgendes machen:
Die SQL Abfrage soll zu dem 'label' Eintrag aus tabelle1 und einer angegebenen Sprache (int 1-4) den 'Wert' des Eintrages aus tabelle2 herausfinden. Dies funktioniert und ist ja auch nicht besonders kompliziert.
Jetzt stehe ich vor dem Problem:
Ich möchte, wenn der gewünschte Eintrag nicht existiert (zu der Sprache), die SQL Anweisung automatisch den Eintrag aus tabelle2 nimmt, der die Sprache='1' hat.

also circa so:

SELECT tabelle2.Wert
FROM tabelle1,tabelle2
WHERE tabelle1.id='1'
AND tabelle2.Bezeichner=tabelle1.label
AND
(WENN EXISTIERT(tabelle2.Sprache='$wantedLanguage')
ODER WENN NICHT EXISTIERT tabelle2.Sprache='1')

oder der letzte Teil als pseudo:
tabelle2.Sprache='$wanted..' XOR (tabelle2.Sprache='1' AND !EXIST(tabelle2.Sprache='$wanted..')

betrachtet man dieses mit generellen Variablen, so ist es eine Art XOR Schaltung in der ich ihm sage:

a || (b & !a)

Wie bekome ich das hin ?
Es soll wohl mit einer sub-query gehen,wobei ich diese vermeiden möchte. Da ich bisher keine Lösung gefunden habe, würde ich mich über eine Anregung freuen,

bis denne,

schamahn
 
Hallo habe eine ähnliches Problem.
Ich würde Dein a || (b && !a) so lösen :
a OR (b AND NOT a).

D.h.:

SELECT ... AND tabelle2.Bezeichner=tabelle1.label
OR ((tabelle2.Sprache='$wantedLanguage')
AND NOT tabelle2.Sprache='1'));

mfg
 

Neue Beiträge

Zurück