2012-03-18 32 views
1

我有這個選擇查詢哪些工作正常,直到我執行內部聯接。內部加入後,「Column'id在'where子句中不明確」?

$id = (int) $_GET['id']; 
$data = mysql_query(" 
SELECT 
    events.start_datetime, 
    events.EVENT_NAME, 
    events.START_TIME, 
    events.END_TIME, 
    events.VENUE_LOCATION, 
    venues.VENUE_NAME 
FROM 
    events 
INNER JOIN venues 
     ON events.VENUE_LOCATION = venues.ID 
WHERE 
    id = ".$id) or die(mysql_error()); 

$id變量是使得根據該URL,從一排查詢負載數據(即:page.php文件ID = 1?)。

任何想法有什麼不對?由於

+1

把「WHERE events.id = ...'或'WHERE venues.id = ...' – piotrm 2012-03-18 18:19:48

回答

1

場地大概有一個id字段,所以你需要指定events.id,不只是id,即

$id = (int) $_GET['id']; 
$data = mysql_query(" 
SELECT 
    events.start_datetime, 
    events.EVENT_NAME, 
    events.START_TIME, 
    events.END_TIME, 
    events.VENUE_LOCATION, 
    venues.VENUE_NAME 
FROM 
    events 
INNER JOIN venues 
     ON events.VENUE_LOCATION = venues.ID 
WHERE 
    events.id = ".$id) or die(mysql_error()); 
+0

謝謝邁克爾,那就是訣竅! – pufAmuf 2012-03-18 18:22:38

2

在WHERE子句中,改變idevents.idvenues.id,無論你的意思。不幸的是,MySQL和我都無法猜出你的意思。

1

我想表events中還有一列id?如果是這樣,名稱是不明確的,因爲MySQL不知道你是否在談論events.idvenues.id。不要緊,你沒有將它命名爲要選擇的列之一。它存在於多個表格中,所以你必須告訴它你真正想要的是哪一個。

1

您沒有指定查詢使用來自哪個表的id,並且這兩個表都有列名「id」,所以它會在「where子句不明確」時拋出「列'id'的錯誤。所以,通過將表名與id放在where子句中來改變你的查詢。

Put either WHERE events.id = ... or WHERE venues.id = ... 
1

如果列名不是唯一的一個單一的表中,那麼它必須與表名(或表別名如果合適的話)合格。所以,顯然id出現在兩個表中。從描述中,聽起來好像venues是添加的表格,所以(在這裏猜測)您可能需要在WHERE子句中將其限定爲events.id