Hallo,
fällt leider kein bessere Themenbezeichnung ein.
Folgende Tabellen-Struktur (Menu) habe ich:
id INTEGER
lang CHAR(2)
content_id INTEGER
title VARCHAR(255)
pos TINYINT
Damit setze ich Menus in verschiedenen Sprachen zusammen, je nach Sprachenkürzel halt, z. B. en oder de. Wenn lang NULL ist, soll der Menupunkt für alle Sprachen gelten.
Und da habe ich ein Problem. Momentan frage wie ich folgt ab:
1. SELECT title, content_id FROM menu WHERE lang="de" ORDER BY pos
Damit bekomme ich alle Menupunkte, die deutsch sind nach pos sortiert. Möchte ich jetzt die allgemeingültigen Einträge dazu haben, könnte ich wie folgt Abfragen:
2. SELECT title, content_id FROM menu WHERE lang="de" OR lang="null" ORDER BY pos
Beispieleintrag - DB:
1 "de" 1 "punkt 1" -10
2 "en" 1 "point 1" -10
3 "de" 2 "punkt 2" -8
4 NULL 2 "point 2 / punkt 2" -8
5 NULL 3 "point 3 / punkt 3" -7
Nun soll meine Abfrage (Sprache deutsch) folgende Datensätze liefern:
1,3,5
Bei englisch entsprechend: 2 4 5
Wenn ich aber die 2. Query von oben nehme bekomme ich bei Abfrage nach deutsch natürlich:
1,3,4(!),5
Ich stehe momentan komplett auf den Schlauch, ob man das elegant in einer Query formulieren kann. Ansonsten würde ich es halt programmtechnisch lösen.
Also, hat jemand einen Ansatz?
Danke,
Andy