Page 1 sur 1

Requete MySQL dans plusieurs tables

Posté : 23 août 2007, 16:40
par Luverger
Bonjour,

Voici un nouveau défis pour les plus fort d'entre vous ...

Je bosse sur un petit site pour ma société qui liste toutes les documentations fournisseurs que l'on peut avoir ...

J'ai la possibilité de créer des listes suivant la société, le numéro de pochette dans laquelle la doc est rangé .... etc ...

J'ai donc ma base de données sous phpmyadmin qui comprend trois tables, tablecontact, tableproduit et tablesociete ...

J'ai voulu ajouter une colonne à une de mes pages (il y en aura trois au total) qui me permettrait en plus des infos déjà présentes de voir apparaître le FOURNISSEUR du matériel que je cherche ...

Voici le bout de code en PHP:

Code :

Code : Tout sélectionner

<?php require_once('../Connections/ConnexionBiblio.php'); ?> <?php mysql_select_db($database_ConnexionBiblio, $ConnexionBiblio); $query_rsChemise = "SELECT tableproduit.ProduitNumChemise, tableproduit.ProduitType, tableproduit.ProduitDate, tableSociete.SocieteNom FROM tableproduit LEFT JOIN tablesociete ON tableproduit.ProduitMarque = tablesociete.RefSociete ORDER BY tablesociete.SocieteNom, tableproduit.ProduitType"; $rsChemise = mysql_query($query_rsChemise, $ConnexionBiblio) OR die(mysql_error()); $row_rsChemise = mysql_fetch_assoc($rsChemise); $totalRows_rsChemise = mysql_num_rows($rsChemise); ?>
J'aimerais savoir comment je peux ajouter ma colonne sachant que les fournisseurs sont listés dans une autre table ????

Dois-je faire deux connexions à ma base dans deux tables différentes ou est-ce que je peux lui dire d'aller tout chercher dans une seule requête ????

Voici le code de la page entière:

Code : Tout sélectionner

<?php require_once('../Connections/ConnexionBiblio.php'); ?> <?php mysql_select_db($database_ConnexionBiblio, $ConnexionBiblio); $query_rsChemise = "SELECT tableproduit.ProduitNumChemise, tableproduit.ProduitType, tableproduit.ProduitDate, tableSociete.SocieteNom FROM tableproduit LEFT JOIN tablesociete ON tableproduit.ProduitMarque = tablesociete.RefSociete ORDER BY tablesociete.SocieteNom, tableproduit.ProduitType"; $rsChemise = mysql_query($query_rsChemise, $ConnexionBiblio) OR die(mysql_error()); $row_rsChemise = mysql_fetch_assoc($rsChemise); $totalRows_rsChemise = mysql_num_rows($rsChemise); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><!-- InstanceBegin template="/Templates/ListeBiblio.dwt" codeOutsideHTMLIsLocked="false" --> <head> <!-- InstanceBeginEditable name="doctitle" --> <title>Listes</title> <!-- InstanceEndEditable --> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- InstanceBeginEditable name="head" --> <!-- InstanceEndEditable --> </head> <body bgcolor="#F2F2F2"> <div align="center"></div> <table width="800" height="452"> <tr> <td width="542" height="35"><strong><font face="Arial, Helvetica, sans-serif">BIBLIO CMF</font></strong> </td> <td width="246">&nbsp;</td> </tr> <tr> <td height="51" colspan="2"><div align="center"><font size="6" face="Arial, Helvetica, sans-serif"><strong><!-- InstanceBeginEditable name="TITRE" -->CHEMISES de documentation<!-- InstanceEndEditable --></strong></font></div></td> </tr> <tr> <td colspan="2" valign="top"><div align="center"> <!-- InstanceBeginEditable name="tableau" --> <table width="100%" border="1" cellpadding="1" bordercolor="#336633" bgcolor="#FFFFCC"> <tr> <td width="40"><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif">Chemise N&deg;</font></strong></div></td> <td width="200"><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif">Soci&eacute;t&eacute;&nbsp;&nbsp;</font></strong></div></td> <td><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif">Type de produit</font></strong></div></td> <td width="60"><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;Date</font></strong></div></td> <td width="60"><div align="center"><strong><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;Fournisseurs</font></strong></div></td> </tr> <?php do { ?> <tr valign="middle"> <td nowrap> <div align="center"><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsChemise['ProduitNumChemise']; ?></font> </div></td> <td><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsChemise['SocieteNom']; ?></font></td> <td><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsChemise['ProduitType']; ?></font></td> <td nowrap><font size="2" face="Arial, Helvetica, sans-serif">&nbsp;<?php echo $row_rsChemise['ProduitDate']; ?></font></td> <td nowrap><font size="2" face="Arial, Helvetica, sans-serif"><?php echo $row_rsDetailFournisseur['SocieteNom']; ?></font></td> </tr> <?php } while ($row_rsChemise = mysql_fetch_assoc($rsChemise)); ?> </table> <p>&nbsp;</p> <p>&nbsp;</p> <!-- InstanceEndEditable --> <p>&nbsp;</p> <p>&nbsp;</p> </div></td> </tr> </table> <p align="center"><strong><font size="7" face="Arial, Helvetica, sans-serif"></font></strong></p> </body> <!-- InstanceEnd --></html> <?php mysql_free_result($rsChemise); ?>
Merci de votre aide ...

Posté : 23 août 2007, 16:52
par Ryle
Tu peux tout aller chercher en une seule requête, il te suffit de faire une jointure entre les deux tables pour associer les enregistrements.

Code : Tout sélectionner

SELECT table1.champ1, table1.champ2, ... , table2.champ1, table2.champ2, ... FROM table1, table2 WHERE table1.champX = table2.champY ...


Tu peux également utiliser la syntaxe JOIN pour lier les deux tables

Posté : 23 août 2007, 16:54
par Luverger
C'est ce que je voudrais tout faire en une seule requete ...

Et tu pourrais m'aider pour mon exemple ???

Posté : 23 août 2007, 17:08
par Ryle
Bah je vais difficilement pouvoir t'aider plus...
- quel est le nom de ta table1 ?
- quel est le nom de ta table2 ?
- quel champ (champX) de ta table1 permet de retrouver l'enregistrement correpondant (champY) dans ta table2 ?
- quels sont les champs de ta table1 et de ta table2 que tu souhaites récupérer de la base ?

Une fois que tu auras répondu à ces questions, il te suffit de faire le remplacement dans l'exemple donné ci dessus et de tester le résultat dans MySQL :)

Posté : 23 août 2007, 17:12
par Luverger
Première table, TABLECONTACT

RefContact
ContactTitre
ContactNom
ContactPrenom
ContactTelephone
ContactFax
ContactMobile
ContactVille
ContactPays
ContactSociete
ContactCP
ContactAdresse1
ContactAdresse2
ContactMail
ContactFonction


Deuxième table, TABLEPRODUIT

RefProduit
ProduitNumChemise
ProduitNumCD
ProduitMarque
ProduitFournisseur
ProduitType
ProduitDate


Dernière table, TABLESOCIETE

RefSociete
SocieteNom
SocieteAdresse1
SocieteAdresse2
SocieteVille
SocietePays
SocieteCP
SocieteTelephone
SocieteFax
SocieteWeb

Je vais essayer de compléter tout ça ...