Requéte avec Not Exists et Alias dans la même table
kokise
Messages postés120Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention21 décembre 2017
-
22 août 2008 à 13:54
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDerniè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
A voir également:
Caused by: org.apache.derby.iapi.error.standardexception: schema 'sa' does not exist
kokise
Messages postés120Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention21 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!!!
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 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.