2013-04-06 6 views
1

Ceci est une question assez individuelle. J'ai donc eu du mal à trouver une bonne réponse sur Stack. Je cherche à exécuter une requête qui combine les informations sur deux tables ensemble.Comment joindre deux tables avec la requête mysql?

Jusqu'à présent, ce que je suis

$query = "SELECT blog_post.*, user.name, user.last_name, user.picture 
      FROM blog_post, user 
      INNER JOIN user ON blog_post.author_id = user.id 
      WHERE blog_post.author_id = ? 
      ORDER BY timestamp DESC LIMIT 10"; 

$Statement = $this->Database->prepare($query); 
$Statement->execute(array($id)); 
$row = $Statement->fetchAll(); 

print_r($row); //Returns: Array() 

je dois afficher les informations de l'utilisateur ainsi que le billet de blog. Je pourrais stocker l'information quand je sauve la poste dans la base de données mais alors elle ne mettrait pas à jour si l'utilisateur a mis à jour leurs informations. Donc, j'essaie de récupérer les informations de l'utilisateur de la table des utilisateurs en même temps que je récupère l'article de blog.

Comment est-ce que je ferais ceci avec une requête de sql? Je sais que je pourrais facilement le faire en appelant simplement une autre requête.

+1

Je pense que vous voulez 'blog_post DE INNER JOIN user', pas' DE blog_post, l'utilisateur INNER JOIN user' –

Répondre

3

Enlever , user. Il doit être écrit de cette façon:

SELECT blog_post.*, user.name, user.last_name, user.picture 
FROM blog_post 
INNER JOIN user ON blog_post.author_id = user.id 
WHERE blog_post.author_id = ? 
ORDER BY timestamp DESC 
LIMIT 10 
+0

Je suis officiellement un idiot. J'ai supprimé toutes les lignes de ma table. J'ai d'abord eu ce que vous avez dit, et puis je me suis demandé pourquoi rien n'était renvoyé. C'était parce que ma table était vide. Merci pour la réponse si! – Alex

+0

@Alex Oh non, je suis désolé d'entendre ça :(:( –

+0

J'ai fait pire .. –