2009-08-15 56 views
2

請原諒我的無知,但我很難找出答案。在另一個Mysql命令中使用一個Mysql命令的結果?

我想從一個mysql命令中獲取結果,並在另一個命令中使用它。

這是我的代碼,它不工作。

//select the event end date of event ID 
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id"; 
$result = mysql_query($sql); 

//plug in the event end date, find event that starts the next day 
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($result, INTERVAL 1 DAY)"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
echo "Next Event ID" . $row['id']; 

我很迷茫。

請幫忙!

謝謝,尼克

回答

2

如果我理解你想實現什麼,它看起來像你想找到所有的事件發生在特定事件發生後的第二天。正確?在這種情況下,你想要做的是自我連接,也就是說,自己加入一個表。您需要至少提供一次該表的別名,以便SQL可以區分它們。

因此,也許是這樣的:

SELECT e2.id 
FROM mm_eventlist_dates e1 
join mm_eventlist_dates e2 on e2.startdate = date_add(e1.enddate, INTERVAL 1 DAY) 
where e1.id=$id 
+0

啊,我看到的時間之間,當我提出了這個畫面,當我發佈答案時,JamesMLV發佈了幾乎相同的答案。聰明的人,那JamesMLV。 – Jay 2009-08-15 19:48:22

+0

雖然他的查詢並不適用於我。而且你更詳細。謝謝你的幫助。 – 2009-08-16 14:32:19

0

的mysql_query()返回結果集,而不是實際的數據庫項目。要做到你想要的以上,做類似的事情(不包括錯誤檢查等):

//select the event end date of event ID 
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id"; 
$result = mysql_query($sql); 

$enddateRow = mysql_fetch_array($result); 

//plug in the event end date, find event that starts the next day 
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add('" . $enddateRow["enddate"] . "', INTERVAL 1 DAY)"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
echo "Next Event ID" . $row['id']; 
0

你不能直接在date_add中使用$ result。調用mysql_fetch_array(如你幾行後),並使用$ row ['enddate']。

0
//select the event end date of event ID 
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
$enddate = $row['enddate']; 

//plug in the event end date, find event that starts the next day 
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($enddate, INTERVAL 1 DAY)"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
echo "Next Event ID" . $row['id']; 

我覺得

+0

啊...你其實應該正確使用它之前逃脫$結束日期...... – 2009-08-15 19:43:21

1

是否有你不能將它們合併到一個查詢理由嗎?

SELECT m1.id FROM mm_eventlist_dates m1 
JOIN mm_eventlist_dates m2 ON m1.startdate = date_add(m2.enddate, INTERVAL 1 DAY) 
WHERE m2.id = $id 
0

您不能直接在另一個查詢中使用mysql_query的結果,您需要首先獲取值。取而代之的

$result = mysql_query($sql); 

//plug in the event end date, find event that starts the next day 
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($result, INTERVAL 1 DAY)"; 

嘗試

$result = mysql_query($sql); 
    $enddate = mysql_fetch_assoc($result); 

    //plug in the event end date, find event that starts the next day 
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($enddate, INTERVAL 1 DAY)"; 
0

試試這個

//select the event end date of event ID 
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id"; 
$result = mysql_query($sql); 

$row = mysql_fetch_assoc($result) 
//plug in the event end date, find event that starts the next day 
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add(".$row['enddate'].", INTERVAL 1 DAY)"; 
$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 
echo "Next Event ID" . $row['id']; 
相關問題