2010-09-19 7 views
1

J'ai les tables item et store (c'est un système de gestion de magasin). item table a une colonne appelée store_id et une autre colonne appelée status. item.status peut être «vendu» ou «invendu».MySQL - conditionnel SELECT

J'ai besoin d'aide pour rédiger une requête qui fera ces choses:

si un magasin a un seul élément
  • sélectionner tous les articles de tous les magasins
  • et cet élément est « vendu », retirer cet élément de le jeu de résultats

Merci d'avance!

Répondre

3

Vous pouvez créer une sous-requête de filtrage qui recherche des magasins avec plus d'un article ou un article non vendu. Ensuite, vous pouvez joindre la sous-requête sur les tables d'origine, comme:

select * 
from (
     select s2.store_id 
     from store s2 
     join items i2 
     on  s2.store_id = i2.store_id 
     group by 
       s2.store_id 
     having 
       count(*) > 1 -- More than one item 
       or max(i2.status) = 'unsold' -- One item but unsold 
     ) filter 
join store s 
on  filter.store_id = s.store_id 
join items i 
on  s.store_id = i.store_id