phpbar.de logo

Mailinglisten-Archive

Positiv- und Negativliste

Positiv- und Negativliste

Cybot 4t2.com-mysql at tekkno4u.de
Mit Jul 23 14:23:20 CEST 2003


> 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