Mailinglisten-Archive |
> ich habe eine einfache Tabelle:
> a: INT *
> b: INT *
> * Primärindex über beide Spalten
>
> Jedes Zahlenpaar gibt es also höchstens einmal.
>
> Nun möchte ich alle a ermitteln, für die gilt:
>
> 1. Teilaufgabe:
> Zu jedem Wert x der Positivliste gibt es einen Datensatz (a,x).
>
> Hierzu verwende ich folgende Abfrage:
>
> SELECT a, COUNT(b) AS b_count
> FROM tabelle
> WHERE (b IN (1,5,12))
> GROUP BY a
> HAVING (b_count = 3)
>
> 2. Teilaufgabe:
> Es gibt keinen Datensatz (a,b), bei dem b in der Negativliste
> enthalten ist.
>
> Dazu verwende ich gerade diese Abfrage:
>
> SELECT a, COUNT(b) AS b_count
> FROM tabelle
> WHERE (b IN (7,8,13))
> GROUP BY ressource
> HAVING (b_count > 0)
>
> ... und entferne dann die hier gefundenen a aus dem obigen Ergebnis.
SELECT a,
SUM(CASE WHEN b IN (1,5,12) THEN 1 ELSE 0 END) AS good_count,
SUM(CASE WHEN b IN (7,8,13) THEN 1 ELSE 0 END) AS bad_count
FROM tabelle
GROUP BY a
HAVING good_count = 3 AND bad_count = 0
--
Sebastian Mendel
www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com
--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive