Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit SQL Query (Join über mehrere Tabellen)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit SQL Query (Join über mehrere Tabellen)

    Hi,

    ich habe ein Problem mit einer Abfrage. Die Abfrage geht über drei Tabellen. Kurze Erklärung des Aufbaus:

    generic_articles:

    Hier sind alle Produktgruppen gelistet. Jede Produktgruppe hat mehrere Bezeichnungen, also generic_articles.ga_des_id, generic_articles.id_standard und generic_articles.id_assembly.

    Jeder dieser IDS ist in der Tabelle lang2text zu finden. In dieser Tabelle ist die ID aus der vorherigen Tabelle, eine Sprach ID für die Sprache und der Verweis auf eine weitere Tabelle, welche den Text enthält. So wird quasi für jede ID der Text für jede Sprache definiert (lang2text.text_id), welcher dann aus der letzten Tabelle gelesen wird.

    Alle Texte sind nun in der texts vorhanden und werden daraus ausgelesen.

    Nun möchte ich in einer Abfrage alle Produktgruppen mit allen Beschreibungen in deutscher Sprache abfragen und habe diese SQL:

    SELECT
    ga_id, ga_nr, dt1.tex_text as description, dt2.tex_text as description_standard, dt3.tex_text as description_assembly
    FROM
    generic_articles ta join lang2text td1 on ta.ga_des_id = td1.des_id
    left join texts dt1 on td1.text_id = dt1.tex_id left outer join lang2text td2 on ta.id_standard = td2.des_id
    left outer join texts dt2 on td2.text_id = dt2.tex_id left outer join lang2text td3 on ta.id_assembly = td3.des_id
    left outer join texts dt3 on td3.text_id = dt3.tex_id
    WHERE td1.des_lng_id = 1 AND td2.des_lng_id = 1 AND td3.des_lng_id = 1

    Die Abfrage haut soweit hin. Es kann aber sein, dass für eine Produktgruppe mal die eine oder andere Beschreibung fehlt. In diesem Falle wird dieser Datensatz nicht angezeigt.

    Ich möchte, dass in diesen Falle der Datensatz nicht ausgeblendet wird, sondern statt dem Text einfach ein NULL zurückregeben wird. Ich weiß das dafür left joins zuständig sind, deswegen habe ich diesen SQL auch gebaut. Aber irgendwie klappt das bei fehlenden Texte nicht mit den NULL.

    Weiß jemand wie ich die Abfrage abändern müsste damit es geht? Ich weiß leider nicht mehr weiter.

  • #2
    Zitat von smilla Beitrag anzeigen
    Jeder dieser IDS ist in der Tabelle designations zu finden. In dieser Tabelle ist die ID aus der vorherigen Tabelle, eine Sprach ID für die Sprache und der Verweis auf eine weitere Tabelle, welche den Text enthält.
    Dann darfst du aber - so wie ich das sehe - nicht im WHERE nach designation filtern, denn die Text/Sprachkombination gibt es ja ggf. nicht. Du musst das im JOIN bei der ON-Condition machen.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar

    Lädt...
    X