[MySql] Abfrage filtert zuviel raus (where)

T

Trax3r

Hallo zusammen!

Ich arbeite grerade an einer Katalogvorlage, die über eine HTML Seite generiert wird.

Leider wird bei der Mysql-Abfrage zuviel raus gefiltert, nämlich immer dann wenn für ein Produkt keine zeile in "products_attributes" existiert.

Das wäre dann dieser code
Code:
p.products_id = pa.products_id
and
	pa.options_id = '2'
and
	pa.options_values_price != "0.000"

Nehme ich diesen weg bekomme ich wieder alle Produkte(wie gewollt).

Nun meine Frage: wie kann ich beziehungen herstellen ohne das er mir produkte vorenthält.

Vollständiger Code:
Code:
select
	concat(pd.products_name,' ' , pd.products_sonst,' ' , pd.products_typ) AS Modell,
	if(pd.products_bohren = 'b', 'bohren','') as Info1,
	if(pd.products_info != '0', pd.products_info,'') as Info2,
	pd.products_baujahr as Baujahr,
	p.products_model as ArtikelNr,
	pd.products_fahrrad as MaxFahrrad,
	pd.products_gewicht as MaxNutzlast,
	ROUND(p.products_price * 1.19 - 92, 2) as Preis,
	pa.attributes_model AS Tieflader,
	pd.products_tlnutzlast AS MaxNutzlast,
	ROUND(pa.options_values_price * 1.19, 2) AS Preis
From 
	products p,
	products_description pd,
	products_attributes pa
where
	pd.products_id = p.products_id
and
	pd.language_id = "2"
and
	pd.products_name NOT LIKE '%Montagekit%'
and
	pd.did = "83"
and
	p.products_id = pa.products_id
and
	pa.options_id = '2'
and
	pa.options_values_price != "0.000"
group by p.products_id
order by p.products_sort ASC

Mit freundlichen Grüßen

Francois
 
in deiner syntax machst du einen mix aus join und where. so wie du das also geschrieben hast, kannst ud nur inner joins machen, was in deinem fall offenbar falsch ist. versuch stattdessen das hier:
SQL:
...
From 
    products p
INNER JOIN  -- hier wir der inner join dafür sorgen, dass produkte ohne einen eintrag in pd rausgefiltert werden. wenn du das nicht willst mach auch hier ein left join
    products_description pd
ON
    pd.products_id = p.products_id
LEFT JOIN  -- left join wird nun auch produkte ohne attribute zulassen
    products_attributes pa
ON
    p.products_id = pa.products_id
where
    pd.language_id = "2"
and
    pd.products_name NOT LIKE '%Montagekit%'
and
    pd.did = "83"
and
    pa.options_id = '2'
and
    pa.options_values_price != "0.000"
...

ps: ich empfehle dir dich über alle möglichen joins zu informieren:
http://www.w3schools.com/sql/sql_join.asp
 
Zuletzt bearbeitet:
Danke BaseBallBatBoy!

Funktioniert einwandfrei. und danke für den Link den habe ich gesucht bei den anderen Dukomentationen hatte ich das nicht so wirklich begriffen.

Gruss

Francois
 
Zurück