Komplizierte(?) SQL-Abfrage

teinze

Grünschnabel
Hallo, ich grüble an einem Problem und komm nicht drauf. Kann mir jemand helfen?

Ich habe 2 Tabellen:
infos
- id [INT]
- titel [INT]
- nachricht [INT]

texte
- id [INT]
- text [TEXT]

Zu einer Info gehören immer 2 Texte (Titel und Nachricht). Diese sind per Fremdschlüssel in "infos" eingetragen. Die Texte (in "texte") von Titel oder Nachricht können evtl. auch leer sein.

Mein Problem:
Ich möchte die Datensätze von "infos" finden, bei denen Titel UND Nachricht leer ist.

Vielen Dank.
René
 
Probier mal Folgendes:
Code:
SELECT
        `infos`.`id`,
        `t`.`text` AS `titel`,
        `n`.`text` AS `nachricht`
  FROM
        `infos`
    INNER JOIN
        `texte` AS `t` ON `infos`.`titel` = `t`.`id`
    INNER JOIN
        `texte` AS `n` ON `infos`.`nachricht` = `n`.`id`
Wenn diese Auswahlabfrage einwandfrei funktioniert, kannst du die Datensätze auch löschen.
 
Komplizierte SQL-Abfrage (zum zweiten)

Hallo nochmal,

mein Problem stellt sich doch etwas schwieriger dar als ich dachte. Meine Tabellen haben natürlich noch ein paar mehr Spalten. Unter anderem auch eine Spalte für die Sprache:

infos
- id [INT] (Primärschlüssel)
- titel [INT] (Fremdschlüssel auf texte.textid)
- nachricht [INT] (Fremdschlüssel auf texte.textid)

texte
- id [INT] (Primärschlüssel)
- textid [INT] (kann mehrfach vergeben sein, da mehrere Sprachen zum selben Text)
- text [TEXT] (Text in der Sprache, die in lang notiert ist)
- lang [TEXT] (Sprache des Textes - z.B. "de", "en", "pl", ...)

Zu jedem Text in "infos.titel" und "infos.nachricht" gibt es also jeweils einen Text in "texte", der dort in mehreren Sprachen vor liegt. Je nach eingestellter Sprache (PHP-Variable) können so die richtigen Texte geholt werden. Das klappt soweit auch ganz gut mit der oben ganannten Lösung.

Aber wenn der Text in der gewünschten Sprache nicht vor liegt, dann wird der Datensatz natürlich nicht im Ergebnis der Abfrage auftauchen.

Meine Frage: Wie kann ich erreichen, dass entweder der Text in der gewünschten Sprache oder (wenn er in der gewünschten Sprache nicht vor liegt) die deutsche Version geholt wird?

Vielen Dank für eure Mühe.
René
 
Zurück