Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2011, 10h53   #1
Invité de passage
 
Inscription : juin 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Par défaut NOT IN (SELECT) sous MySQL

Bonjour à tous,

Je suis bloqué sur un requête SQL, pour faire simple, je souhaite retrouver tous les dossiers qui n'ont pas de documents de type "Library::Eso"

Code :
SELECT c.id, c.`code` FROM `customer_files` c WHERE c.`id` NOT IN (SELECT d.`customer_file_id` FROM `documents` d WHERE d.`type` = "Library::Eso")

0 résultat

J'ai donc scindé les requêtes :

Code :
SELECT c.id, c.`code` FROM `customer_files` c

1300 résultats OK

Code :
SELECT d.`customer_file_id` FROM `documents` d WHERE d.`type` = "Library::Eso"

802 résultats OK

Code :
SELECT c.`code` FROM `customer_files` c LEFT JOIN `documents` d ON c.id = d.customer_file_id WHERE d.`type` = "Library::Eso
"


797 résultats OK

Donc là je sèche... j'ai même essayé une autre technique :

Code :
SELECT c.`code` FROM `customer_files` c LEFT OUTER JOIN `documents` d ON c.id = d.customer_file_id WHERE d.`type` = "Library::Eso" HAVING COUNT(d.customer_file_id) = 0

0 résultat...

Si quelqu'un pouvait m'éclairer sur l'erreur commise... merci d'avance
tinou66644 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 11h46   #2
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Bonjour,

Et en essayant quelque chose du genre :

Code :
1
2
3
4
5
6
7
 
SELECT c.id, c.code
FROM customers_files c
WHERE NOT EXISTS (SELECT d.*
		  FROM documents d
		  WHERE c.id=d.customer_file_id
		  AND d.tyoe = 'Library::Eso')
__________________
Citation:
C'est en faisant n'importe quoi qu'on devient n'importe qui
Si un message vous a aidé, n'hésitez pas à mettre +1
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/06/2011, 11h49   #3
Invité de passage
 
Inscription : juin 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Merci tfc3146,

Ca fonctionne en effet très bien comme cela...

Mais y'a t'il une raison pour que les techniques employées soient expliquées mais ne fonctionnent pas... ?
tinou66644 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 11h58   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Ton problème c'est que :
Code :
1
2
3
SELECT d.`customer_file_id` 
  FROM `documents` d 
 WHERE d.`type` = "Library::Eso"
contient des NULL.

SELECT NOT IN
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/06/2011, 12h05   #5
Invité de passage
 
Inscription : juin 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 3
Points : 0
Points : 0
Ah oui en effet, ça fonctionne nickel maintenant.

juste rajouté un

Code :
 AND `documents`.`customer_file_id` IS NOT NULL
Merci Beaucoup pour votre aide et pour le lien fournit, en effet le problème se rapproche du mien.

Bonne journée
tinou66644 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h27.


 
 
 
 
Partenaires

Hébergement Web