SQL-Query Problem
2003-05-31 20:12
dakira
Moin,
ich habe ein kleines Problem mit einem SQL query.
Hier erstmal, die betroffenen Tabellen (mit ein bisschen bogus content)
Waehle alle products_id's aus products_levels_price mit der level_id 2 fuer die gilt, dass die products_id's in der gleichen category (categories_id) alle den
gleichen products_levels_price-Wert haben. Wenn nicht alle den gleichen Wert haben soll
nichts ausgewaehlt werden (aus der category).
Wenn ich jetzt zum Beispiel ueber level_id=2 abfrage moechte ich als ergebnis die products_id's 1,2,3,4,5 weil nur bei diesen innerhalb ihrer Category ueberall der gleiche products_levels_price steht. Die products_id's 6-10 (aus cat 2) haben unterschiedliche Werte und sollen deshalb nicht auftauchen. Wuerde bei 6-10 der Wert 0.20 stehen, dann sollen diese auch mit in die Auswahl.
Mein bisheriger Ansatz:
ich habe ein kleines Problem mit einem SQL query.
Hier erstmal, die betroffenen Tabellen (mit ein bisschen bogus content)
____________________________
table products_to_categories
products_id | categories_id
----------------------------
1 | 1
2 | 1
3 | 1
4 | 1
5 | 1
6 | 2
7 | 2
8 | 2
9 | 2
10 | 2
______________________________________________
table products_levels_price
level_id | products_id | products_levels_price
----------------------------------------------
2 | 1 | 0.15
2 | 2 | 0.15
2 | 3 | 0.15
2 | 4 | 0.15
2 | 5 | 0.15
2 | 6 | 0.20
2 | 7 | 0.20
2 | 8 | 0.17
2 | 9 | 0.20
2 | 10 | 0.13
Und folgendes moechte ich fragen:Waehle alle products_id's aus products_levels_price mit der level_id 2 fuer die gilt, dass die products_id's in der gleichen category (categories_id) alle den
gleichen products_levels_price-Wert haben. Wenn nicht alle den gleichen Wert haben soll
nichts ausgewaehlt werden (aus der category).
Wenn ich jetzt zum Beispiel ueber level_id=2 abfrage moechte ich als ergebnis die products_id's 1,2,3,4,5 weil nur bei diesen innerhalb ihrer Category ueberall der gleiche products_levels_price steht. Die products_id's 6-10 (aus cat 2) haben unterschiedliche Werte und sollen deshalb nicht auftauchen. Wuerde bei 6-10 der Wert 0.20 stehen, dann sollen diese auch mit in die Auswahl.
Mein bisheriger Ansatz:
SELECT a.products_id, a.categories_id b.products_levels_price
FROM products_to_categories a, products_levels_price b
WHERE level_id='2'
AND a.products_id = b.products_id
GROUP BY categories_id
HAVING MIN(b.products_levels_price)=MAX(b.products_levels_price);
Wenn mir jemand sagen kann, was ich da oben falsch mache waere ich sehr dankbar ;)