2010-03-17 5 views
1

J'ai une table d'utilisateurs, une table de livres et une table d'auteurs. Un auteur peut avoir beaucoup de livres, alors qu'un utilisateur peut aussi avoir beaucoup de livres. (Voici comment ma base de données est actuellement configurée). Comme je suis assez nouveau à Jusqu'à présent mon installation est comme bookview.php?book_id=23 d'accéder à la page des auteurs, puis de voir tous les livres pour l'auteur. Les détails du livre unique sont tous affichés sur cette nouvelle page ... Je peux obtenir la sortie pour afficher l'ID utilisateur associé au livre, mais pas le nom d'utilisateur, et cela s'applique également pour le nom de l'auteur, je peux l'ID de l'auteur affichage, mais pas le nom, donc quelque part dans la requête ci-dessous Je ne demande pas les valeurs correctes:MySQL appelant dans Nom d'utilisateur à afficher au lieu de l'ID?

SELECT users.user_id, 
     authors.author_id, 
     books.book_id, 
     books.bookname, 
     books.bookprice, 
     books.bookplot 
    FROM books 
INNER JOIN authors on books.book_id = authors.book_id 
INNER JOIN users ON books.book_id = users.user_id 
WHERE books.book_id=" . $book_id; 

quelqu'un pourrait-il me aider à corriger ce que je puisse afficher le nom de l'auteur et le nom d'utilisateur à la fois associé au livre ! Merci pour l'aide :)

+0

On dirait que vous avez oublié simplement d'inclure ces colonnes dans votre instruction select. Nous pourrions facilement les ajouter pour vous mais vous devrez nous dire comment les tables ressemblent d'abord :) – Wolph

+0

Wow, suis-je un idiot ou pas !!! Oh mon cher désolé pour ce haha, j'ai passé une heure à essayer de faire ça aussi! Je savais que j'étais proche :) – Jess

+0

Vous pouvez supprimer la question - il n'y a pas de pénalité de réputation. Le lien se trouve à gauche de votre nom d'utilisateur, sous les tags. –

Répondre

0

Il serait utile que j'ai ajouté les champs de nom dans la requête select: D

0

Ces deux réunit:

INNER JOIN authors on books.book_id = authors.book_id 
INNER JOIN users ON books.book_id = users.user_id 

implique également authors.book_id = users.user_id qui, sur la face cela n'a aucun sens. Sûrement le code que vous avez posté n'est pas le code que vous utilisez actuellement ...?

1

Je pense que le droit des conditions de jointure serait quelque chose comme (changements bolded)

SELECT users.user_id,
**users.user_name,**
authors.author_id,
**authors.author_name,**
books.book_id,
books.bookname,
books.bookprice,
books.bookplot
FROM books
INNER JOIN authors on books.**author_id** = authors.**author_id**
INNER JOIN users ON books.**user_id** = users.user_id
WHERE books.book_id=" . $book_id;

Ou vous pouvez utiliser la syntaxe moins verbeux pour de simples jointures internes.

SELECT users.user_id,
users.user_name,
authors.author_id,
authors.author_name,
books.book_id,
books.bookname,
books.bookprice,
books.bookplot
FROM books, authors, users
where books.author_id = authors.author_id
and books.user_id = users.user_id
and books.book_id=" . $book_id

Questions connexes