2011-09-03 52 views
1

我似乎無法查詢包含外鍵的'events'表。關係查詢問題:/

這是我已經建立了:

$query = 'SELECT events.*, venues.*, music_styles.* FROM events, venues, music_styles'. 
    'INNER JOIN venues, music_styles v ON (events.VENUE_LOCATION = venues.ID) AND (events.MUSIC_STYLE_ID = music_styles.ID'; 
$result = mysql_query($query); 

我試圖說events.VENUE_LOCATION等於表的ID「場館」和events.MUSIC_STYLE_ID等於表「music_styles」的ID。

這是我得到的錯誤:

查詢無效:不是唯一的表/別名: '場地'

這是我的數據庫設計: enter image description here

謝謝很多人:)

回答

2

讓我們來削減PHP的東西,這是不相關的。你說,

SELECT events.*, venues.*, music_styles.* FROM events, venues, music_styles 
     INNER JOIN venues, music_styles v ON (events.VENUE_LOCATION = venues.ID) AND (events.MUSIC_STYLE_ID = music_styles.ID 

這不是很正確,這不是JOIN的工作方式。它應該是,

SELECT events.*, venues.*, music_styles.* 
     FROM events 
     INNER JOIN venues ON(events.VENUE_LOCATION = venues.ID) 
     INNER JOIN music_styles ON(events.MUSIC_STYLE_ID = music_styles.ID) 
+0

感謝Kerrek,那做了魔力:) – pufAmuf

2

您正在選擇表格場地和music_styles兩次,這會導致您錯誤。你必須給每個人一個唯一的別名(例如:... FROM venues AS v)。

但是,您的查詢似乎很奇怪。你正在做一些連接和笛卡爾產品,你有無與倫比的圓括號,你想要做什麼?你是否正在尋找這樣的查詢:

SELECT * 
    FROM events e -- e is the alias 
INNER JOIN venues v 
    ON e.VENUE_LOCATION = v.ID 
INNER JOIN music_styles m 
    ON e.MUSIC_STYLE_ID = m.ID; 
+0

嗨文森特,這正是我想要做的,謝謝! :) – pufAmuf