2011-01-06 3 views
0
SELECT thread.id AS p_id, post.title, post.content, author.username, author.id AS a_id 
         FROM thread INNER JOIN author 
         ON author_id = author.id 
         ORDER BY thread.created DESC 
         LIMIT $start, 30 

J'ai une table appelée posts, posts_id et tags.Jointures internes en php

Comment puis-je étendre l'instruction SQL ci-dessus pour obtenir toutes les balises liées à chaque publication en utilisant INNER JOINS, ... ou autre chose?

+0

Où la table 'post' est-elle définie dans cette requête? Vous ne pouvez pas sélectionner "post.title" ou "post.content" comme il se présente maintenant, car il n'y a pas de table POST/alias –

+0

Je pense qu'il voulait écrire le post de SELECT, j'ai déjà vu cette requête quelque part, peut-être son copié et collé – jonnnnnnnnnie

Répondre

0

SELECT thread.id AS p_id, post.title, post.content, author.username, author.id AS a_id DE fil LEFT JOIN auteur sur author_id = author.id LEFT JOIN balises sur tags.thread_id = thread.id ORDER BY thread.created DESC LIMIT $ start, 30

Sanil

+0

Est-ce que ce n'est pas la même chose ...? – jonnnnnnnnnie

2

Essayez cette (a pris la table avec les informations de balise pour être des étiquettes et ayant une colonne thread_id):

SELECT thread.id AS p_id, 
      post.title, 
      post.content, 
      author.username, 
      author.id AS a_id, 
      GROUP_CONCAT(DISTINCT tag_name ORDER BY tag_name DESC SEPARATOR ',') AS tags 
FROM thread INNER JOIN author 
ON author_id = author.id INNER JOING TAGS 
ON thread.id = tags.thread_id 
GROUP BY thread.id 
ORDER BY thread.created DESC 

LIMIT $start, 30 

EDIT: Déplacé GROUP D'une ligne vers le haut.

+0

Cela crée une erreur mysql – jonnnnnnnnnie

+0

GROUP BY devrait être une ligne au-dessus .. Fixe le .. Essayez maintenant ... – Chandu

Questions connexes