2013-08-28 5 views
-3

Pour une raison quelconque, cela me donne un résultat vide.Instruction SQL Select

Table 
ppb_id  ppb_no ppb_date 
100  1  (null) 
100  2  2013-08-28 00:00:00 
101  1  2013-08-28 00:00:00 
101  2  2013-08-28 00:00:00 

select ppb_id from ppb 
where (ppb_no = 1 and ppb_date is null) and (ppb_no = 2 and ppb_date is not null) 

Pouvez-vous me dire ce que je fait de mal?

+10

ppb_Date ne peut pas être à la fois nulle et pas nul en même temps? – Elias

+2

@Elias non seulement cela mais 'ppb_no' ne peut pas égaler 1 et 2 en même temps – Taryn

+1

Qu'est-ce que vous essayez exactement de faire avec cette requête? Que voulez-vous que le résultat de votre requête soit? – Taryn

Répondre

4

je changerais qu'il soit:

select ppb_id from ppb 
where (ppb_no = 1 and ppb_date is null) or (ppb_no = 2 and ppb_date is not null) 
2

Vous vous dites ne souhaitez que des résultats où ppb_np = 1 AND ppb_date is null qui = 1 résultat ..

Ensuite, vous dites AND ppb_no = 2 and ppb_date is not null.

Vous pouvez essayer OR depuis ce moment vous vérifiez fondamentalement seulement 1 ligne après votre AND

1

J'ai de bonnes raisons de croire que vous avez besoin d'un OR au lieu de AND.

select ppb_id from ppb where (ppb_no = 1 and ppb_date is null) or 
(ppb_no = 2 and ppb_date is not null) 
2

ppb_date ne peut pas être null et not null en même temps. Il semble que vous êtes à la recherche de l'opérateur OR:

select ppb_id from ppb 
where (ppb_no = 1 and ppb_date is null) OR 
     (ppb_no = 2 and ppb_date is not null) 
0

Vous devez utiliser ou au lieu de et si vous avez besoin de deux enregistrements ppb_no = 1 = 2 ppb_no