Внутреннее объединение из нескольких столов

У меня есть 3 таблицы, а именно:

Patron
======
patron_num


Booking_For_Schedule
====================
tname
date
time
booking_num

Booking_By_Patron
=================
booking_num
patron_num

Я хотел бы получить результат с помощью столбцов patron_num, date, time, а также tname, вот так:

patron_num     date      time     tname
     1      2013-11-03  20:00    TestName 

...так далее

Цель этого домашнего задания - научить нас ВНУТРЕННЕМ СОЕДИНЕНИЮ, но у меня возникли некоторые трудности. Может ли какой-то ТАК пользователь подтолкнуть меня в правильном направлении?

Вот мой SQL:

SELECT `patron_num`,`date`,`time`,`tname`
FROM `booking_for_schedule` `F`
INNER JOIN `booking_by_patron` `B` on `F`.`booking_num` = `B`.`booking_num`
INNER JOIN `patron` `P` on `B`.`patron_num`=`P`.`patron_num`

который возвращает ошибку: #1052 - Column 'patron_num' in field list is ambiguous

2 ответа

Решение
SELECT `P`.`patron_num`,`date`,`time`,`tname`
FROM `booking_for_schedule` `F`
INNER JOIN `booking_by_patron` `B` on `F`.`booking_num` = `B`.`booking_num`
INNER JOIN `patron` `P` on `B`.`patron_num`=`P`.`patron_num`

Поможет с неоднозначностью.

Поскольку patron_num находится в нескольких таблицах, вам нужно указать, какую из них вы хотите использовать. Вы можете сделать это, добавив псевдоним таблицы перед тем, как он входит в ваши объединения. Пример:

SELECT `B`.`patron_num`,`date`,`time`,`tname`
FROM `booking_for_schedule` `F`
INNER JOIN `booking_by_patron` `B` on `F`.`booking_num` = `B`.`booking_num`
INNER JOIN `patron` `P` on `B`.`patron_num`=`P`.`patron_num`
Другие вопросы по тегам