IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

un seul SELECT sur plusieurs tables ?


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 408
    Points : 15 777
    Points
    15 777
    Par défaut Re: un seul SELECT sur plusieurs tables ?
    des simples INNER JOIN (les jointures de base) suffisent

    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Ok merci, j'ai mis des LEFT JOIN plutot ke des INNER vu ke je ve ke ça affiche au moins la news même kan ya pas de comments

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT news.*,users.pseudo, news_comments.comments FROM news 
    	LEFT JOIN users ON users.id_user=news.id_user 
    	LEFT JOIN news_comments ON news_comments.id_news=news.id_news 
    	ORDER BY news.date DESC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SELECT sur plusieurs tables
    Par heyboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/11/2006, 14h50
  2. select sur plusieurs tables
    Par julien.63 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 17h29
  3. [SQL Access] SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 14h00
  4. SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/11/2005, 12h27
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo