Hallo ich habe drei Tabellen:
Tabelle 1: "com_shop_products" mit Daten über das Produkt
Tabelle 2: "com_shop_products_lg" mit Daten über das Produkt -> Sprachen
Tabelle 3: "com_shop_product_category" produkt_id, category_id
Tabelle 4: "com_shop_categories" Kategory Daten
Info:
Man kann jedes Produkt inaktive schalten sowie jede Kategorie. Wenn man die Kategorie inaktive schaltet sollten auch alle Produkte welche zu dieser Kategorie zugeteilt sind inaktive sein, heisst werden nicht aus der Datenbank geholt. Natürlich auch wenn man nur das Produkt inaktive schaltet. Ausserdem sollte es auch gehen wenn das Produkt zu keiner Kategorie angeordnet ist.
Nun bei einer Produkt Abfrage klappt das wunderbar mit LEFT JOIN:
Doch bei einer Abfrage mit WHERE IN scheint dies nicht mehr zu funktionieren:
Habe da schon einiges ausprobiert geht aber alles nicht. Vielleicht kann mir da jemand einen Tip geben? Besten Dank im voraus.
Tabelle 1: "com_shop_products" mit Daten über das Produkt
Tabelle 2: "com_shop_products_lg" mit Daten über das Produkt -> Sprachen
Tabelle 3: "com_shop_product_category" produkt_id, category_id
Tabelle 4: "com_shop_categories" Kategory Daten
Info:
Man kann jedes Produkt inaktive schalten sowie jede Kategorie. Wenn man die Kategorie inaktive schaltet sollten auch alle Produkte welche zu dieser Kategorie zugeteilt sind inaktive sein, heisst werden nicht aus der Datenbank geholt. Natürlich auch wenn man nur das Produkt inaktive schaltet. Ausserdem sollte es auch gehen wenn das Produkt zu keiner Kategorie angeordnet ist.
Nun bei einer Produkt Abfrage klappt das wunderbar mit LEFT JOIN:
PHP-Code:
'SELECT p.id, pl.description FROM com_shop_products p, com_shop_products_lg pl
LEFT JOIN com_shop_product_category pc on :id = pc.product_id
LEFT JOIN com_shop_categories c on pc.category_id = c.id
WHERE p.id = pl.id AND p.id = :id AND pl.language_id = :language_id
AND (c.public = 1 OR c.public is null)'
Doch bei einer Abfrage mit WHERE IN scheint dies nicht mehr zu funktionieren:
PHP-Code:
'SELECT p.id, pl.description FROM com_shop_products p, com_shop_products_lg pl
LEFT JOIN com_shop_product_category pc on pc.product_id IN ('.implode(',', $ids).')
LEFT JOIN com_shop_categories c on pc.category_id = c.id
WHERE p.id IN ('.implode(',', $ids).') AND p.id = pl.id AND p.public = 1
AND pl.language_id = :language_id AND (c.public = 1 OR c.public is null)'
Kommentar