2009-08-15 59 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']; 
相关问题