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

PHP & Base de données Discussion :

[SQL] Forum: affichage des sujets, jointure


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Par défaut [SQL] Forum: affichage des sujets, jointure
    Salut les developpeurs php ^^,

    j'ai fait il y a assez longtemps un forum qui est fini mais qui n'était pas très optimisé (requetes dans les boucles etc..)

    et la je rencontre un problème pour selectionner les sujets mais aussi leurs nombre de réponses, mais le problème est que je ne sais pas quoi mettre a la place du (?) ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT s.id AS idsujet,s.titre,s.auteur,s.importance,
      (SELECT COUNT(*) FROM postes p LEFT JOIN sujets s ON p.sujet = s.id AND    s.id =  (?)) AS nbrmess
    FROM sujets s 
    LEFT JOIN postes p ON s.categorie = "'.$_GET['nom'].'" 
    ORDER BY importance,s.id DESC LIMIT ' . $premierSujet . ', ' . $nb_sujets.'
    Je fais un count(*) de la table postes pour avoir le nbr de mess quand l'id du sujet dans postes (p.sujet) = id du sujet dans sujets (s.id) mais faut aussi que id du sujet(s.id) = id du sujet qu'on traite acutellement. J'ai essayé de faire s.id = idsujet mais erreur pas de 'idsujet' in 'on clause'...

    J'espere avoir bien détailler mon problème pour que vous m'aidiez ^^

    Merci d'avance,

    legende.

  2. #2
    Membre chevronné Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Il faut que tu utilises des alias deifférents pour tes deux table sujet (et postes par la même occasions ^^). C'est ce qu'on appel une sous requete corrélé, c'est a dire qui dépend de la ligne courant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT s.id AS idsujet,s.titre,s.auteur,s.importance,
      (SELECT COUNT(*) FROM postes p1 LEFT JOIN sujets s1 ON p1.sujet = s1.id AND    s1.id = s.id) AS nbrmess
    FROM sujets s 
    LEFT JOIN postes p ON s.categorie = "'.$_GET['nom'].'" 
    ORDER BY importance,s.id DESC LIMIT ' . $premierSujet . ', ' . $nb_sujets.'

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Par défaut
    Citation Envoyé par Asmodean
    Il faut que tu utilises des alias deifférents pour tes deux table sujet (et postes par la même occasions ^^). C'est ce qu'on appel une sous requete corrélé, c'est a dire qui dépend de la ligne courant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT s.id AS idsujet,s.titre,s.auteur,s.importance,
      (SELECT COUNT(*) FROM postes p1 LEFT JOIN sujets s1 ON p1.sujet = s1.id AND    s1.id = s.id) AS nbrmess
    FROM sujets s 
    LEFT JOIN postes p ON s.categorie = "'.$_GET['nom'].'" 
    ORDER BY importance,s.id DESC LIMIT ' . $premierSujet . ', ' . $nb_sujets.'
    Merci de me répondre ^^.

    Mais,mais maintenant mysql me dit: Unknown column 's.id' in 'on' clause.

  4. #4
    Membre chevronné Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    J'ai fais une petite erreur en effet :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT s.id AS idsujet,s.titre,s.auteur,s.importance,
      (SELECT COUNT(*) FROM postes p1 LEFT JOIN sujets s1 ON p1.sujet = s1.id AND    s1.id = idsujet ) AS nbrmess
    FROM sujets s 
    LEFT JOIN postes p ON s.categorie = "'.$_GET['nom'].'" 
    ORDER BY importance,s.id DESC LIMIT ' . $premierSujet . ', ' . $nb_sujets.'

    Tu as utilisé un alias pour s.id donc il doit falloir réutiliser cette alias

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/12/2008, 15h22
  2. [SQL] Forcer l'affichage d'une table SQL malgrès des collones (jointure) vide
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 19/04/2007, 10h18
  3. suggestion quant à l'affichage des sujets résolus
    Par trotters213 dans le forum Evolutions du club
    Réponses: 2
    Dernier message: 10/10/2006, 12h14
  4. [9i]Affichage des pages sql.pno
    Par MorganeD dans le forum Oracle
    Réponses: 1
    Dernier message: 02/02/2006, 09h18

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