|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 132 ![]() |
Salut,
J'ai une requête avec "union" et je me demande s'il y a un moyen de remplacer cette requête qui utiliserais "case then". La requête est la suivante: Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() |
1) Commence par apprendre la syntaxe en vigueur depuis 1992 pour les jointures.
2) Les parenthèses autour de la seconde requête sont inutiles, UNION sert de séparateur naturel entre les deux requêtes. 3) Les champs (fields) sont à la campagne ou dans les formulaires, pas dans les tables SQL qui sont composées de lignes et de colonnes. 4) Ta requête fait l'union dans la même colonne de table1.field1 et de table2.field2 alors que CASE signifie que tu vas afficher X au cas où une condition est remplie, éventuellement Y au cas où une autre condition est remplie, éventuellement Z dans tous les autres cas. Ce n'est pas du tout la même chose que la requête UNION. Alors explique mieux ton besoin, de préférence avec des noms de tables et de colonnes réels au lieu d'utiliser des abstractions et en fournissant la structure des tables impliquées et un petit jeu de données ainsi que le résultat attendu. Ce sera ainsi plus facile de t'aider.
__________________
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
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Bonjour,
Pour avoir le même résultat je doute. Le problème étant que vous allez devoir passer par des left outer join et là deux problèmes se posent : - 1 ligne de "matable" est référencée à la fois dans "table1" et "table2" vous ne pourrez choisir qu'une seule des deux valeurs - 1 ligne de "matable" n'est référencée dans aucune des deux autres tables : vous allez devoir selectionner une valeur null. De plus niveau perf je ne pense pas que ce soit la panacée. Donc gardez votre UNION qui est fait pour le besoin que vous avez. edit : Ah CinePhil ! |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 132 ![]() |
Merci beaucoup pour la réponse. Ca confirme que j'avais raison. Mon supérieur au travail m'a demandé de faire un case, moi non plus je ne voyais pas comment pour le besoin actuel.
Merci encore une fois |
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 132 ![]() |
je reformule ma question
Je réécris la requête d'une autre manière: Code :
Le but étant d'afficher tous les enregistrement de table1 et table 2 qui sont relié à matable. Des suggestions? |
||
|
|
00
|
|
|
#6 |
![]() ![]() |
Ton besoin est incompréhensible !
Lis la phrase en bleu de ma signature et applique son principe !
__________________
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
|
|
|
#7 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 132 ![]() |
Merci pour le commentaire. Je poste la solution que j'ai trouvé ca sera peut être utile aux gens qui comprendraient la problématique même si je ne suis pas arrivé à la formuler clairement:
Code :
|
||
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Au passage, vous avez acheté un stocke de parenthèses ? Parce que dans cette nouvelles requêtes elle ne servent toujours à rien...
Et c'est pas avec ça que vous allez comprendre ce que vous faites et quelle est la syntaxe du langage SQL.... peut être auriez vous du suivre les cours ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#9 | |||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 531 ![]() |
Citation:
C'est peut-être le but recherché, mais il vrai qu'il a été, depuis le début de ce post, si mal formulé que, a minima, le doute est permis.
__________________
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
|
|
|
#10 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 132 ![]() |
Effectivement c'est le but recherché. Et en effet, ca a été mal formulé.
Merci pour votre compréhension et indulgence. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com