none
XOR in WHERE Klausel? RRS feed

  • Frage

  • Hallo zusammen,

    ich habe mal eine Frage wie ich mein Problem am besten lösen kann. Ich habe folgende zwei Tabellen:

    1. items (id,name)
    2. infos (item_id,language,decription)

    Ich möchte nun gerne diese beiden Tabellen verbinden und dabei soll aus der "infos" Tabellen entweder die deutsche "description" genommen werden oder aber, sollte es keine deutsche geben, soll die englische genommen werden. Nun Frage ich mich, wie man das am Besten machen kann. Eine XOR Verknüpfung gibt es nach meinen Recherchen ja nicht. Sonst hätte ich das folgendermaßen gemacht:

    SELECT t1.name,t2.description FROM items t1 INNER JOIN infos t2 ON t1.id = t2.item_id WHERE t2.language='D' XOR t2.language='E';

    Kann mir da jemand mal einen Schubs in die richtige Richtung geben, welche Lösung da die performanteste ist? Komme ich um eine Funktion nicht herum?

    Vielen Dank schon mal im Voraus.

    stefan.

    Mittwoch, 24. Oktober 2012 08:26

Antworten

  • Hi,

    damit sollte es klappen:

    SELECT 
    	t1.name,
    	isnull(t2.description,(select t3.description from infos t3 where t1.id = t3.item_id AND t3.language='E') as description
    FROM items t1 LEFT JOIN infos t2 ON t1.id = t2.item_id AND t2.language='D' 

    Grüße

    Oliver

    • Als Antwort markiert stefan2342 Mittwoch, 24. Oktober 2012 09:42
    Mittwoch, 24. Oktober 2012 08:43

Alle Antworten

  • Hi,

    damit sollte es klappen:

    SELECT 
    	t1.name,
    	isnull(t2.description,(select t3.description from infos t3 where t1.id = t3.item_id AND t3.language='E') as description
    FROM items t1 LEFT JOIN infos t2 ON t1.id = t2.item_id AND t2.language='D' 

    Grüße

    Oliver

    • Als Antwort markiert stefan2342 Mittwoch, 24. Oktober 2012 09:42
    Mittwoch, 24. Oktober 2012 08:43
  • Hallo Oliver,

    vielen Dank für deine Hilfe. Das klappt einwandfrei.

    Viele Grüße
    Stefan

    Mittwoch, 24. Oktober 2012 09:42