2013-03-12 65 views
1

我有3個表,具體如下:內從多個表中加入

Patron 
====== 
patron_num 


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

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

我想檢索與列patron_numdatetime,並tname結果,像這樣:

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

...等

這個家庭作業問題的目的是教我們INNER JOINS,但我有一些困難。可能有某種用戶將我推向正確的方向?

這裏是我的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

+1

我的推動是學會閱讀錯誤信息。你得到的那個非常明確。這並非總是如此。 – 2013-03-12 00:06:21

+0

您與其他人在下面指出的內容非常接近。當你想到爲什麼定義你從哪張桌子上拉出來很重要時,問問你自己是否有可能沒有贊助人的話題?或者可能是沒有booking_by_patron的booking_num?當你瞭解外部連接(左,右,完整)時,這將變得很重要,我相信這些連接可以很好地解釋[這裏](http://www.codinghorror.com/blog/2007/10/a-visual-explanation -of-sql-joins.html) – xQbert 2013-03-12 00:09:49

+0

@xQbert感謝您的鏈接! – 2013-03-12 00:54:27

回答

1
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` 

將有助於歧義。

+0

謝謝!我認爲我的問題是我認爲patron_num不應該含糊不清,因爲我的內部連接在兩個patron_num上是平等的。 – 2013-03-12 00:54:55

1

由於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`