un seul SELECT sur plusieurs tables ?
Bonjour,
Voila j'ai 3 tables (users, news et news_comments) qui ont pour but de stoker/afficher des news (postés par des users enregistrés) et les commentaires de news (posté par des visiteurs, un peu a la manière des blogs)
Mes tables simplifiés se structurent comme ça :
Table news
- id_news
- id_user
- titre_news
- texte_news
Table users
- id_user
- pseudo
Table news_comments
- id_news_comments
- id_news
- comments
Ce ke je cherche a afficher exactement c : une news (son titre + texte + son auteur via pseudo) + ses commentaires puis boucler sur la news suivante. Pour l'instant je fais ça comme requète et ça marche.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
<?
require ("connexion.php");
// Boucle des news + pseudo users
$i_news =0;
$query_liste_news = mysql_query("SELECT news.*,users.pseudo FROM news,users WHERE users.id_user=news.id_user");
while($row_liste_news = mysql_fetch_object($query_liste_news))
{
$i_news++;
echo "<br>titre_news".$i_news."=".$row_liste_news->titre;
echo "<br>texte_news".$i_news."=".$row_liste_news->texte;
echo "<br>pseudo_news".$i_news."=".$row_liste_news->pseudo;
// Boucle des comments associées aux news
$i_comments = 0;
$query_liste_news_comments = mysql_query("SELECT comments FROM news_comments WHERE news_comments.id_news='".$row_liste_news->id_news."' ");
while($row_liste_news_comments = mysql_fetch_object($query_liste_news_comments))
{
$i_comments++;
echo "<br>comment".$i_comments."_de_la_news".$i_news."=".$row_liste_news_comments->comments;
}
// Passage de ligne entre chaque news
echo "<p>";
}
exit ;
?> |
Le problème c ke je fais une boucle dans une boucle et ke j'aimerais reussir a faire une requete unique (donc boucle unique) mais je sais pas comment faire (ya surement des histoires de left_join etc)
Bref si kelkun pouvais me conseiller, ce serais sympa.
Merci.
Re: un seul SELECT sur plusieurs tables ?
des simples INNER JOIN (les jointures de base) suffisent
essaye ça :
Code:
1 2 3 4
| SELECT *
FROM news AS N
INNER JOIN users AS U ON U.id_user = N.id_user
INNER JOIN news_comments AS NC ON NC.id_news = N.id_news |