|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : janvier 2004 Messages : 440 ![]() |
Bonjour,
J'ai une requête UNION à laquelle j'aimerai rajouter des critères. Mais les critères de recherches ne sont pas affectés. Ex: Code :
ne fonctionne pas? |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Parce qu'il faut le répéter dans chaque requête.
Ou alors, il faut passer par une sous-requête : Code :
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : janvier 2004 Messages : 440 ![]() |
Ok mais j'ai pas les mêmes noms de champs dans mes tables, j'utilise des alias...comment faire dans ce cas?
|
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Mets les mêmes alias dans les 2 requêtes réunies par l'union :
Code :
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : janvier 2004 Messages : 440 ![]() |
OK Merci!
Je vais tester! |
|
|
00
|
|
|
#6 | ||
|
Membre régulier
![]() Inscription : janvier 2004 Messages : 440 ![]() |
Alors ça ne fonctionne pas je place ici ma requête
Code :
Code :
Le fichier Client n'existe pas dans la clause From
|
||
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
C'est quoi ces noms de colonnes dans les sub-select qui ne sont pas séparés par des virgules ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 852 ![]() |
salut,
déjà essaye de mettre les requêtes dans tes union entre parenthèse: Code sql :
car il se peut que tu aies des problèmes de résolution de nom de table ou colonne quand tu fais des union le nom des colonnes résultantes est par défaut celui des colonnes de la 1ère table, pas la peine de le faire dans le(s) autre(s) quand tu fais un from sur une sous requête TU DOIS SURNOMMER LA SOUS REQUETE !
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
||
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Je ne sais pas pourquoi ta première requête parlait de collégiens et de lycéens alors que la vraie requête n'a rien à voir mais bon...
Ouch ! Elle fait mal aux yeux ta requête ! 1) La colonne "date" ne devrait pas s'appeler ainsi car c'est un mot réservé du langage SQL. 2) Inutile de faire des alias quand tu reprends exactement le nom de la colonne. 3) L'utilisation d'alias court pour les tables rend l'écriture et la lecture de la requête plus facile 4) Indente tes requêtes pour pouvoir les lire, et nous les faire lire, plus facilement. 5) La table User semble ne pas être jointe au reste car il n'y a pas de condition de jointure dans le WHERE. D'ailleurs les jointures ne se font plus ainsi depuis 1992 ! Puisque tu utilises LEFT OUTER JOIN, utilise aussi INNER JOIN ! Mais apparemment, le chemin des jointures est celui-ci : Appel->Client->DepartementActivite->AgenceCommerciale |-------->Salarie->Utilisateur |-------->Service |-------->AppelDetail->AppelObjet Donc il s'agit d'une jointure externe de Salarie vers Utilisateur 6) Le format de date standard en SQL est 'aaaa-mm-jj' La colonne mal nommée "date" est-elle de type DATE ? 7) Comme tu as déjà fait un DECODE dans les sous-requêtes, il me semble inutile de le refaire dans la requête générale. Ou alors fais le dans la requête générale et pas dans les sous-requêtes ! 8) Bizarre que la jointure de MailDetail soit avec AppelObjet ! Normalement, ta requête devrait plutôt ressembler à ça : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com