|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Inscription : mai 2004 Messages : 383 ![]() |
Bonjour,
Je n'arrive pas à faire une requête SQL qui doit récupérer des infos sur 2 tables avec un LEFT JOIN: Code :
Code :
Comment je peux faire ? merci, Vincent. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Inscription : mai 2004 Messages : 383 ![]() |
ok, c good !
Code :
|
||
|
|
00
|
|
|
#3 | ||||
![]() ![]() |
1) Puisque tu sais faire une jointure externe (LEFT JOIN), apprend à écrire correctement les jointures internes (INNER JOIN) selon la syntaxe en vigueur depuis 1992 !
2) Évite la guerre des étoiles ! Surtout entre deux tables qui ont des noms de colonnes identiques ! 3) Tu mets une condition de restriction (WHERE) sur la table purchase qui est située à droite de la jointure externe à gauche. Tu transformes ainsi ta jointure externe en jointure interne ! Que cherches-tu exactement ? - Tous les books et leurs infos de purchase quand elles existent ? = > jointure externe Code :
=> Jointure interne 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
|
|
|
#4 | |
|
Membre habitué
![]() Inscription : mai 2004 Messages : 383 ![]() |
Citation:
Et en fait il n'y a même pas besoin de INNER puisque le where va le faire automatiquement: Code :
SELECT book.*, purchase.* FROM book, purchase WHERE book.book_id = purchase.book_id AND purchase.user_id = 3 ORDER BY purchase.purchase_date LIMIT 1000 |
|
|
|
01
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Disons que l'on promouvois les structures avec un inner join / left outer /etc car :
- c'est dans la norme SQL depuis plus de 20 ans - ça permet une meilleur lisibiltié du code - ça permet d'éviter des erreurs d'oublie de jointure sur des requêtes complexe - c'est plus maintenable Donc les jointures comme vous venez de le faire sont à proscrire |
|
|
20
|
Copyright © 2000-2012 - www.developpez.com