MySQL вызывает имя пользователя, чтобы показать вместо ID? - PullRequest
1 голос
/ 17 марта 2010

У меня есть таблица пользователей, таблица книг и таблица авторов. У автора может быть много книг, а у пользователя - много книг. (Так настроена моя БД). Поскольку я довольно новичок в этом, моя установка похожа на bookview.php?book_id=23 от доступа к странице авторов, затем просмотра всех книг для автора. Все детали отдельной книги отображаются на этой новой странице ... Я могу получить выходные данные для отображения идентификатора пользователя, связанного с книгой, но не имени пользователя, и это также относится к имени автора, я могу идентифицировать автора для отображать, но не имя, поэтому где-то в запросе ниже я не вызываю правильные значения:

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;

Может ли кто-нибудь помочь мне исправить это, чтобы я мог отобразить имя автора и имя пользователя, связанные с книгой! Спасибо за помощь:)

Ответы [ 3 ]

1 голос
/ 17 марта 2010

Я думаю, что правильные условия соединения были бы примерно такими (изменения выделены жирным шрифтом)

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

Или вы можете использовать менее подробный синтаксис для простых внутренних объединений.

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

0 голосов
/ 17 марта 2010

Эти два соединения соединяются:

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

также подразумевает authors.book_id = users.user_id, что, на первый взгляд, не имеет смысла. Конечно, код, который вы разместили, не тот код, который вы на самом деле используете ...?

0 голосов
/ 17 марта 2010

Было бы полезно, если бы я добавил поля имени в запрос выбора: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...