Requête not in qui ne passe pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requête not in qui ne passe pas

par SwiTz » 02 mars 2006, 16:39

C'est bon j'ai résolu le problème j'ai fait une requête du style

Code : Tout sélectionner

select tmp_clt1.* from tmp_clt1 left join tmp_clt2 on tmp_clt1.ID_CLT = tmp_clt2.ID_CLT where tmp_clt2.ID_CLT is null
Cette requête me donne donc les éléments présents dans tmp_clt1 mais pas dans tmp_clt2

Merci pour tout

par Cyrano » 24 févr. 2006, 13:20

Alors essaye ceci:

Code : Tout sélectionner

SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c WHERE RS NOT IN (SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c, vendeur v WHERE c.ID_CLT = ca.ID_CLT AND v.NOM_VENDEUR = c.VL AND ANNEE = 2004 AND ID_MOIS = 1) AND c.ID_CLT = ca.ID_CLT AND ANNEE = 2004 AND ID_MOIS = 1;

par SwiTz » 24 févr. 2006, 12:50

A priori oui, pour la requête suivante

Code : Tout sélectionner

SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c WHERE c.ID_CLT = ca.ID_CLT AND ANNEE =2004 AND ID_MOIS =1
Affichage des enregistrements 0 - 29 (10028 total, traitement: 0.3284 sec.)

Pour la suivante

Code : Tout sélectionner

SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c, vendeur v WHERE c.ID_CLT = ca.ID_CLT AND v.NOM_VENDEUR = c.VL AND ANNEE =2004 AND ID_MOIS =1
Affichage des enregistrements 0 - 29 (9611 total, traitement: 0.0431 sec.)


Il y a une différence entre les deux, et c'est cette différence que je voudrais obtenir :'( (snif je suis nul)

par Cyrano » 24 févr. 2006, 12:33

Es-tu absolument certain qu'il existe bien des résultats correpondant à ta recherche ?

par SwiTz » 24 févr. 2006, 12:26

Hélas la requête que tu m'as donné ne renvoie rien :s

par Cyrano » 24 févr. 2006, 11:58

en SQL, <> correspond à != en PHP : différent de

par SwiTz » 24 févr. 2006, 11:51

Que signifie l'opérateur <> ?

par Cyrano » 24 févr. 2006, 11:49

et pourquoi pas faire plus simplement :

Code : Tout sélectionner

SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c, vendeur v WHERE c.ID_CLT = ca.ID_CLT AND ANNEE = 2004 AND ID_MOIS = 1 AND v.NOM_VENDEUR = c.VL AND v.NOM_VENDEUR <> c.VL;

par Hermès » 24 févr. 2006, 11:40

et si tu remplaces

Code : Tout sélectionner

AND ID_MOIS =1 NOT IN (
par

Code : Tout sélectionner

AND ID_MOIS =1 AND ID_MOIS NOT IN (
?

par SwiTz » 24 févr. 2006, 11:27

Voila j'ai essayé de faire une requête NOT IN elle passe mais elle n'affiche rien la voici donc

Code : Tout sélectionner

SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c WHERE c.ID_CLT = ca.ID_CLT AND ANNEE =2004 AND ID_MOIS =1 NOT IN ( SELECT DISTINCT RS FROM ca_gecaprod ca, CLIENT c, vendeur v WHERE c.ID_CLT = ca.ID_CLT AND v.NOM_VENDEUR = c.VL AND ANNEE =2004 AND ID_MOIS =1 )
Cette requête devrai en temps normal m'afficher le nom des entreprise qui ne sont pas pris en compte dans la sous requête. Mais hélas elle ne m'affiche rien. Or si on éxécute les deux requêtes séparement, le nombre d'entreprises renvoyés dans le résultat est différents. Pourquoi ?

par zeus » 21 févr. 2006, 15:11

Je ne pense pas mais tu peux toujours faire un BAK pour parer à toute éventualité

par SwiTz » 21 févr. 2006, 14:18

D'accord je tourne sous MySQL 4.0.21. Normalement je peut mettre à jour MySQL, il ne devrai pas avoir de pertes pour les tables ?

par albat » 21 févr. 2006, 12:58

Ce genre de requêtes ne risque-t-il pas de donner un joli produit cartésien ?... :-"
SELECT DISTINCT vl FROM client C, vendeur V WHERE V.nom_vendeur = V.vl

par mc » 21 févr. 2006, 12:54

dans ton 2e select tu met des espaces et dans le 1er non test en jouant sur les espace.

sinon essaie en mettant comme ceci

select distinct VL from client as c, ca_gecaprod as ca where c.ID_CLT = ca.ID_CLT not in (select distinct VL from client as c, vendeur as v where v.NOM_VENDEUR = v.VL)

par zeus » 21 févr. 2006, 12:53

Quelle est la version de MySQL ?
Les sous-requetes ne sont supportées que depuis la 4.1