php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.10.2011, 21:05  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 200
smilla befindet sich auf einem aufstrebenden Ast
Standard 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.

Geändert von smilla (04.10.2011 um 15:34 Uhr).
smilla ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.10.2011, 00:09  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
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.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mitarbeiter für Query OS gesucht Kasenoru Sonstige 0 18.06.2011 00:34
[Erledigt] (Dynamischer) DELETE über mehrere Tabellen seb_ Datenbanken 7 29.05.2011 20:19
Probleme beim Abfragen zweier Tabellen... Lapje Datenbanken 3 07.04.2011 22:50
Join über zwei Tabellen, zwei Kriterien bei Select Thunderre Datenbanken 1 26.03.2011 21:18
[Erledigt] SQL nur leeren Join finden? Screeze Datenbanken 6 03.01.2011 16:33
Datenbankabfrage über 3 Tabellen typhoch2 Datenbanken 2 05.12.2010 22:08
Join über 4 Tabellen pbundschuh Datenbanken 3 15.06.2010 08:30
[Erledigt] join(?) über 3 Tabellen kn0wledge PHP Tipps 2010 13 18.03.2010 16:21
Query über mehrere Tabellen ph|L Datenbanken 3 07.04.2009 14:26
[Erledigt] Join über 3 Tabellen BlackPanther Datenbanken 2 11.03.2009 19:56
Update über zwei Tabellen tekknotrip Datenbanken 2 26.02.2007 16:25
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34
[Erledigt] Join für Select Count(`id`)-Abfrage über 4 Tabellen Datenbanken 4 10.07.2004 18:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql join mehrere tabellen, sql query join, sql verschiedene tabellen, join über alle tabellen, sql mehrere tabellen php, sql eine bezeichnung in mehreren tabellen vorhanden, sql code mehrere tabellen join, problem mit sql query, sql abfragen über mehrere tabellen, sql abfragen 3 tabellen, sql join mit mehreren tabellen, sql mehere join, sql join auf zwei tabellen, tabellenjoin produkt produktgruppe, ga_des_id, sql forum left outer join über 2 tabellen, sql * über mehrere tabellen, sql bezieht sich auf mehrere tabellen fehler, sql abfragen join über meherer tabellen, php \$query->join(\

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum