SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.01.2012 03:09:22

jenyaz
Участник
Зарегистрирован: 06.01.2012
Сообщений: 3

Помогите сделать выборку INNER JOIN трех таблиц

У меня такая проблема,
у меня есть три таблички

1) books

id     name   description     price

2) authors

id    name

3) book_author

book_id     author_id


SELECT books.id, books.name, books.description, books.price
                FROM books
                INNER JOIN book_author
                ON books.id = book_author.book_id
                WHERE book_author.author_id = 2

затем я это все вывожу в цикле по каждой книге.
ВОПРОС

Как к этому запросу еще присоединить табличку authors, а точнее поле author_id  ???

Неактивен

 

#2 06.01.2012 04:47:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите сделать выборку INNER JOIN трех таблиц

Не ясно, что вы хотите сделать. В приведенном вами запросе поле author_id известно и равно заданной константе.

Неактивен

 

#3 06.01.2012 10:30:34

jenyaz
Участник
Зарегистрирован: 06.01.2012
Сообщений: 3

Re: Помогите сделать выборку INNER JOIN трех таблиц

Сорри не author_id а поле authors.name  из таблицы authors

Неактивен

 

#4 06.01.2012 14:10:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите сделать выборку INNER JOIN трех таблиц

SELECT
b.id,
b.name,
a.name AS author_name, -- имя автора
b.description,
b.price
FROM books AS b
JOIN book_author AS ba ON b.id = ba.book_id
JOIN authors AS a ON a.id = ba.author_id
WHERE ba.author_id = 2

INNER JOIN и просто JOIN одно и то же

books AS b - присвоение таблицам псевдонимов для более короткого обращения при перечислении их столбцов.

a.name AS author_name - переименование колонок в результате запроса


затем я это все вывожу в цикле по каждой книге.

Один запрос на каждую книгу - это довольно долго.
Лучше бы Вы сделали один запрос на все книги (WHERE ba.author_id IN (...) ), а потом в клиентской программе в цикле его разобрали.

Неактивен

 

#5 08.01.2012 20:31:31

jenyaz
Участник
Зарегистрирован: 06.01.2012
Сообщений: 3

Re: Помогите сделать выборку INNER JOIN трех таблиц

Благодарю!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson