Problem bei SQL Abfrage (inner join)
Hi, habe ein Problem folgende SQL Abfrage umzubauen
Ich habe folgende Abfrage welche mir 78 Ergebnisse zurückliefert und welche auch ordnungsgemäß arbeitet.
Des weiteren habe ich 3 Tabellen: products, products_merkmale und products_description
Das knifflige dabei ist die products_merkmale (pm)
pm.products_id | pm.merkmal_code | pm.merkmal_description
1 | ASIA | Aus Asien
1 | Bambus | Aus Bambus hergestellt
1 | Fächer | Faltfächer
2 | ASIA | Aus Asien
3 | ASIA | Aus Asien
3 | FÄCHER | Faltfächer
usw....
die obrige Abfrage gibt mir nun alle Artikel wieder, welche FÄCHER oder ASIA als Merkmal in der der Merkmale-Tabelle haben, soweit sogut.
Nun möchte ich aber nur die Artikel welche FÄCHER >>UND << ASIA in der Merkmal-Tabelle haben.
Mit einem einfachen ändern des ORs in AND in Zeile 09 funktionierts nicht, soweit würde mein SQL - Verständnis auch reichen aber leider ist dann dort Schluss und ohne externe Hilfe würde ich nicht auf die Lösung kommen.
Danke für eure Antworten/Hilfestellungen
Ich habe folgende Abfrage welche mir 78 Ergebnisse zurückliefert und welche auch ordnungsgemäß arbeitet.
SELECT DISTINCT p.products_fsk18, p.products_shippingtime, p.products_model, p.products_ean, p.products_var1, p.products_var2, pd.products_name, p.products_id, p.products_quantity, p.products_image, p.products_weight, pd.products_short_description, pd.products_description, p.manufacturers_id, p.products_price, p.products_vpe, p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id, p.products_wbz, p.products_eta, p.products_nnbestellbar
FROM products p
INNER JOIN products_description pd ON p.products_id = pd.products_id
INNER JOIN products_merkmale m ON p.products_model = m.products_id
WHERE p.products_status = '1'
AND pd.language_id = '2'
AND (
m.merkmale_code = 'ASIA'
OR m.merkmale_code = 'FÄCHER'
)
ORDER BY p.products_price ASC
LIMIT 0 , 30
Des weiteren habe ich 3 Tabellen: products, products_merkmale und products_description
Das knifflige dabei ist die products_merkmale (pm)
pm.products_id | pm.merkmal_code | pm.merkmal_description
1 | ASIA | Aus Asien
1 | Bambus | Aus Bambus hergestellt
1 | Fächer | Faltfächer
2 | ASIA | Aus Asien
3 | ASIA | Aus Asien
3 | FÄCHER | Faltfächer
usw....
die obrige Abfrage gibt mir nun alle Artikel wieder, welche FÄCHER oder ASIA als Merkmal in der der Merkmale-Tabelle haben, soweit sogut.
Nun möchte ich aber nur die Artikel welche FÄCHER >>UND << ASIA in der Merkmal-Tabelle haben.
Mit einem einfachen ändern des ORs in AND in Zeile 09 funktionierts nicht, soweit würde mein SQL - Verständnis auch reichen aber leider ist dann dort Schluss und ohne externe Hilfe würde ich nicht auf die Lösung kommen.
Danke für eure Antworten/Hilfestellungen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167621
Url: https://administrator.de/contentid/167621
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
4 Kommentare
Neuester Kommentar
Moin.
Wir wäre es mit IN()-Statements oder alternativ mit Having().
Dann solltest Du zu Deinem Ergebnis kommen.
HTH
MK
SELECT DISTINCT p.products_fsk18, p.products_shippingtime, p.products_model, p.products_ean, p.products_var1,
p.products_var2, pd.products_name, p.products_id, p.products_quantity, p.products_image, p.products_weight,
pd.products_short_description, pd.products_description, p.manufacturers_id, p.products_price, p.products_vpe,
p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id, p.products_wbz,
p.products_eta, p.products_nnbestellbar
FROM products p
INNER JOIN products_description pd ON p.products_id = pd.products_id
WHERE p.products_status = '1'
AND pd.language_id = '2'
AND p.products_model in(select products_id from products_merkmale where merkmale_code = 'ASIA')
AND p.products_model in(select products_id from products_merkmale where merkmale_code = 'FÄCHER')
ORDER BY p.products_price ASC
LIMIT 0 , 30
Wir wäre es mit IN()-Statements oder alternativ mit Having().
Dann solltest Du zu Deinem Ergebnis kommen.
HTH
MK