Requêtes imbriquées

Avatar du membre
Mammouth du PHP | 1564 Messages

23 oct. 2013, 17:22

Bonjour,

je souhaiterai aller chercher un nom dans une autre table sans pour autant faire une autre requête dans mon while pour le faire, voici mon code:
			<?php
			$req_dm = mysql_query("SELECT id,id_regie,nom_regie_rewrite,commentaire,date FROM commentaires ORDER BY id DESC LIMIT 5");
			if(mysql_num_rows($req_dm) == 0) {
				echo "<li>Aucun commentaire ajouté pour le moment.</li>";
			} else {
				while($info_dm = mysql_fetch_assoc($req_dm)) {
					$req = mysql_query("SELECT nom,nom_rewrite FROM regies WHERE nom_rewrite = '".$info_dm['nom_regie_rewrite']."'");
					$info = mysql_fetch_assoc($req);
					?>
					<li>
						<span class="date_dernier_msg"><a href="<?php echo $NAVIG['url_site']."/".url_regie($info_dm['id_regie'],$info_dm['nom_regie_rewrite'])."#".$info_dm['id']; ?>" title="Posté le <?php echo date("d-m-Y h:i",$info_dm['date']); ?>"><?php echo $info['nom']; ?></a></span> <?php echo couperChaine(formcode($info_dm['commentaire'],1),50); ?>
					</li>
					<?php
				}
			}
			?>
Je souhaiterai enlever cette requête du code:
$req = mysql_query("SELECT nom,nom_rewrite FROM regies WHERE nom_rewrite = '".$info_dm['nom_regie_rewrite']."'");
                                        $info = mysql_fetch_assoc($req);
et la mettre dans celle ci:
$req_dm = mysql_query("SELECT id,id_regie,nom_regie_rewrite,commentaire,date FROM commentaires ORDER BY id DESC LIMIT 5");
Merci d'avance pour vos futures solutions.

Mammouth du PHP | 571 Messages

23 oct. 2013, 17:54

bonjour,
en faisant une jointure entre la table commentaire et la table regie, ta requête devient:
 
$sql="SELECT c.id,c.id_regie,c.nom_regie_rewrite,c.commentaire,c.date,r.nom,r.nom_rewrite FROM commentaires c JOIN regies r ON r. nom_rewrite=c.nom_regie_rewrite ORDER BY c.id DESC LIMIT 5";
$req_dm = mysql_query($sql);
pour des questions d'optimisation il est beaucoup plus intéressant que la jointure se fasse entre la clé primaire et la clé étrangère(id_regie et id) .

Avatar du membre
Mammouth du PHP | 1564 Messages

23 oct. 2013, 18:13

Merci pour la solution

par contre je comprend pas ce que tu veux dire à la fin, désolé