SELECT über 4 Tabellen, problem mit leeren Feldern :/

Ralph

Erfahrenes Mitglied
Hallo, ich hab folgendes Problem. Da ich nic hso fit mit JOINS bin ;) hab ich folgendes SELECT-Statement gebastelt.

PHP:
SELECT 
		a.ref_artikel_id, 
		a.anzahl, 
		b.preis * a.anzahl AS preis, 
		b.titel, 
		b.artikelnr, 
		c.text as farbe, 
		d.text as groesse,
		c.attribut_id as farbe_id,
		d.attribut_id as groesse_id
	FROM 
		ro_warenkorb a, 
		ro_artikel b, 
		ro_attribute c,
		ro_attribute d
	WHERE 
		a.ref_artikel_id = b.artikel_id 
		AND a.ref_farbe_id = c.attribut_id
		AND a.ref_groesse_id = d.attribut_id
		AND a.ref_kunden_id = 1233

Diese Statement funktioniert soweit genauso wie es soll. Jetzt zum Problem. In der Tabelle ro_attribute sind Größen und Farben gespeichert. Jeder Artikel aus ro_artikel hat die Spalte ref_groesse_id und ref_farbe_id.

Nun kann es vorkommen, dass einer dieser beiden Spalten nicht benutzt wird (momentan trage ich dann '0' dort ein, als Deafult.)

Das SELECT-Statement wirft aber nun die Zeilen, die in einer der beiden Spalten (a.ref_farbe_id oder a.ref_groesse_id) eine '0' stehen haben NICHT aus.

Keine Ahnung, wie ich das basteln muss, damit auch die Zeilen rauskommen, die eine '0' stehen haben.

Bitte um Hilfe ;)
 
PHP:
SELECT 
			a.ref_artikel_id, 	
			a.anzahl, 
			b.preis * a.anzahl AS preis, 
			b.titel, 
			b.artikelnr, 
			c.text as farbe, 
			c.attribut_id as farbe_id,
			d.text as groesse, 
			d.attribut_id as groesse_id
		FROM 
			ro_warenkorb a	
			LEFT  JOIN ro_artikel b ON a.ref_artikel_id = b.artikel_id 	
			LEFT JOIN ro_attribute c ON a.ref_farbe_id = c.attribut_id
			LEFT JOIN ro_attribute d ON a.ref_groesse_id = d.attribut_id
		WHERE 
			a.ref_kunden_id = 1233

Problem gelößt. Für alle die es interessiert, Code s.o. ;)

Joins sind wohl doch nicht so schwer, man muss sich nur klar machen, wer mit wem ;) Wie im richtigen Leben :D

*closed plz*
 
Das Problem ist meiner Meinung nach die UND-Verknüpfung der Zeilen:
a.ref_farbe_id = c.attribut_id AND a.ref_groesse_id = d.attribut_id
, da hier beide Werte true sein müssen.
Würde es mal mit
AND ((a.ref_farbe_id = c.attribut_id) OR (a.ref_groesse_id = d.attribut_id))
versuchen, da hier nur einer der Ausdrücke true zurückgeben muß, um einen Wert zu liefern.
cu
 
Zurück