sql left join 2 таблицы - PullRequest
       20

sql left join 2 таблицы

2 голосов
/ 05 января 2012

У меня есть SQL-запрос с левым соединением, который прекрасно работает:

SELECT book.* FROM book
LEFT JOIN purchase ON book.book_id = purchase.book_id
WHERE purchase.user_id = 3
ORDER BY purchase.purchase_date

Но мне также нужна информация из таблицы покупок, поэтому я попытался:

SELECT purchase.*, book.*
FROM purchase, book
LEFT JOIN purchase ON book.book_id = purchase.book_id
WHERE purchase.user_id = 3
ORDER BY purchase.purchase_date

Но это такне работает, у меня появляется это сообщение об ошибке: # 1066 - Неуникальная таблица / псевдоним: 'покупка'

Как я могу изменить первый запрос, чтобы также получить данные из таблицы покупок?

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Вам не нужно ссылаться на таблицу purchase в предложении FROM - это будет означать, что вы одновременно объединяете таблицы книг и покупок, а затем снова присоединяетесь к таблице покупок. Поскольку существует два экземпляра таблицы purchase, они должны иметь уникальный псевдоним - таким образом, ошибка. Вам, вероятно, просто нужно это:

SELECT purchase.*, book.*  
  FROM purchase LEFT JOIN purchase ON book.book_id = purchase.book_id 
 WHERE purchase.user_id = 3 ORDER BY purchase.purchase_date;
3 голосов
/ 05 января 2012

Ваш первый оператор был почти точно тем, что вы хотите, вам просто нужно указать в SELECT, какие поля вы хотите вернуть из таблицы покупок.

, например

SELECT book.*, purchase.user_id 
FROM book 
    LEFT JOIN purchase ON book.book_id = purchase.book_id 
WHERE purchase.user_id = 3 
ORDER BY purchase.purchase_date

Вам не нужно указывать «покупку» в предложении FROM, а также в JOIN - потому что у вас есть, поэтому вы видите ошибку.

...