Requéte avec Not Exists et Alias dans la même table

kokise Messages postés 120 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 21 décembre 2017 - 22 août 2008 à 13:54
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 22 août 2008 à 17:55
Bonjour tout le monde
J'ai un soucis avec une requête qui est la voici :

SELECT DISTINCT customerid, transactnumber, adddate, laststate, laststatedate, messagetype
FROM tblcustomerbedsl



WHERE laststate IS NULL
AND messagetype = 'ISPMOB01'
AND  GETDATE() >= adddate + 1
AND  Customerid 
             NOT IN (SELECT DISTINCT cmd.CustomerID, cmd.adddate FROM tblCustomerBeDSL cmd
             WHERE cmd.LastState IS NOT NULLAND cmd.LastState <> ''
             AND cmd.addDate < tblcustomerbedsl.addDate 
             AND tblcustomerbedsl.Customerid = cmd.CustomerID)

cela veut dire que je veux selectionné les commandes des clients qui n'ont pas de statut mais aussi chercher qu'il n'y a pas eu des commandes lancé aprés cette commande (et cela je le précise avec la date "cmd.addDate < tblcustomerbedsl.addDate") et qui ont un statut.

- J'ai l'erreur suivante :
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

J'ai essayé avec NOT EXISTS à la place de NOT IN mais j'obtient :
Incorrect syntax near the keyword 'EXISTS'.

Merci pour votre aide

4 réponses

kokise Messages postés 120 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 21 décembre 2017
22 août 2008 à 15:07
Allez les
Membre Club
Ne me laisser pas tomber !!!
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
22 août 2008 à 15:44
Bonjour,


Ne la laisse pas tomber
Elle est si fragile
...Tu sais c' est pas si facile




Blague à part,
Manque un espace entre NULL et AND

...WHERE cmd.LastState IS NOT NULL AND cmd.LastState <> ''





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
kokise Messages postés 120 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 21 décembre 2017
22 août 2008 à 17:14
hihihi Drôle

J'ai trouvé la solution, il faut supprimer le CustomerId avant le NOT EXISTS

SELECT DISTINCT customerid, transactnumber, adddate, laststate, laststatedate, messagetype
FROM tblcustomerbedsl



WHERE laststate IS NULL
AND messagetype = 'ISPMOB01'
AND  GETDATE() >= adddate + 1
AND   NOT EXISTS (SELECT DISTINCT cmd.CustomerID, cmd.adddate FROM tblCustomerBeDSL cmd
             WHERE cmd.LastState IS NOT NULL AND cmd.LastState <> ''
             AND cmd.addDate < tblcustomerbedsl.addDate 
             AND tblcustomerbedsl.Customerid = cmd.CustomerID)

MAIS LE MALHEURE c'est que je n'est pas obtenu le resultat souhaité  elle ne prend pas en considération tout ce qui est aprés le NOT EXISTS!!!
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
22 août 2008 à 17:55
Puisque tu cherches les commandes des clients qui n'ont pas de statut
mais aussi chercher qu'il n'y a pas eu des commandes lancé aprés cette commande (et cela je le précise avec la date "cmd.addDate < tblcustomerbedsl.addDate") et qui ont un statut,
il faut avoir OR à la place de AND non ?

WHERE laststate IS NULL
AND messagetype = 'ISPMOB01'
AND  GETDATE() >= adddate + 1
OR NOT EXISTS(SELECT DISTINCT cmd.CustomerID, cmd.adddate FROM tblCustomerBeDSL cmd ...

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
Rejoignez-nous