|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2008 Messages : 8 ![]() |
Bonjour à tous,
premièrement je voulais m'excuser le titre du poste est très approximatif, j'ai pas mieux sous la main. Je suis loin d'être expérimenter en SQL cependant j'ai un souci. j'ai 2 tables : Table1 et Table2 défini comme suite : Table1: id nombre champ1 Table2: id table1_id champ1 champ2 On a une relation 1-n entre Table1 et Table2. je cherche à récupérer x (le champ nombre de Table1) element de Table2 qui sont lier à Table1 par. Mais en meme temps j'ai besoin de y (le champ nombre de Table1) element de Table2. Je pourrai faire une 1er requête qui me renvoie la liste de Table1 puis requête tour à tour Table2 mais les 200enregistrements sur Table1 me disent que c'est pas une bonne idée. Je cherche donc une solution à base de jointure/sous requête/union valide pour faire ceci. Je croie que ce problème pousse mes connaissance en SQL à bout :/ Pour info si ca peux aidée, l'appel ce fait en PHP(avec doctrine). |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonjour,
1-n entre Table1 et Table2 et entre Table2 et Table1 ? Si oui, l'introduction d'une table de jonction ou d'association est généralement préconisée pour garantir l'intégrité et simplifier les requêtes. Citation:
Je n'ai pas trop compris ton besoin, mais connais tu la syntaxe des jointures ? Il faudra tout d'abord que tu jointes ces 2 tables via Table1.id et Table2.table1_id via INNER JOIN, LEFT JOIN ou RIGHT JOIN. Je suis preneur d'une meilleur explication sinon |
|
|
|
00
|
|
|
#3 | ||||||
|
Invité de passage
![]() Inscription : octobre 2008 Messages : 8 ![]() |
je vais tenter mieux alors
alors oui je connais les jointures. Pour la relation entre Table2 et Table1 je dirais une relation 1-1(mais je suis pas sur de mon coup) Pour 1 entrée donné dans Table2 il n'y en à que une dans Table1. Mon but et est récupéré une liste de la forme : table1.id,table1.champ1,table2.id,table2.champ1,table2.champ2 avec x(table1.nombre ligne pour chaque entrée de table 1 pour l'instant j'ai fait 2requêtes : Code :
Code :
disons que dans table1 on a 2 enregistrements id nombre 1 3 2 2 je cherche à avoir : Code :
je sais pas si c'est plus claire, en tout cas je l'espere |
||||||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonsoir,
je ne comprends pas pourquoi tu récupères pas tous les id par la requête ou à défaut une liste via IN puis que tu ne traites pas ton bloc recu via php ? En gros une requête et X traitements php plutot que X requêtes et un traitement php ? Les allers-retours serveurs sont couteux en temps... |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
pourquoi ne pas tout récupérer d'un seul coup avec votre deuxième requete sans le filtre ? Code sql :
|
||
|
|
00
|
|
|
#6 | |||
![]() ![]() |
Citation:
Autrement dit, on a le morceau de MCD suivant : Table1 -0,n----Associer----1,1- Table2 Dès lors, il suffit de faire une jointure interne entre les deux tables : Code :
Avec une explication plus concrète et la réelle structure des tables, ce serait 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
|
Copyright © 2000-2012 - www.developpez.com