2010-06-28 18 views
1

以下是我正在执行的查询。但出于某种原因,$ MachineQuery没有得到结果。我认为它与查询中使用$ q1有关,但我不知道为什么。 任何想法?在另一个查询中使用mysql_query结果

$q1 =mysql_query("SELECT DISTINCT SymptomID 
FROM Tree 
WHERE SymptomID NOT IN (SELECT DISTINCT SymptomID 
         FROM Tree 
         WHERE LBNodeID = 0 OR RBNodeID = 0)") 

$MachineQuery = mysql_query("SELECT DISTINCT M.MachineID, M.MachineName 
           FROM Machines M, Systems Sys, Symptoms Sym 
           WHERE M.MachineID = Sys.MachineID AND Sys.SystemID 
           =Sym.SystemID AND Sym.SymptomID IN ($q1) 

回答

2

的问题是,$q1是一个PHP的资源。它不是查询,数组,字符串或其他任何东西。因此,您需要将数据“转换”为更适合您的类型。

这里是我的解决方案:

$q1 =mysql_query("SELECT DISTINCT SymptomID 
    FROM Tree 
    WHERE SymptomID NOT IN (SELECT DISTINCT SymptomID 
         FROM Tree 
         WHERE LBNodeID = 0 OR RBNodeID = 0)"); 
$list = array(); 
while ($row = mysql_fetch_array($q1)) { 
    $list[] = $row[0]; 
} 
$fullList = join(',', $list); 

$MachineQuery = mysql_query("SELECT DISTINCT M.MachineID, M.MachineName 
           FROM Machines M, Systems Sys, Symptoms Sym 
           WHERE M.MachineID = Sys.MachineID AND Sys.SystemID 
           =Sym.SystemID AND Sym.SymptomID IN ($fullList) 

这样,你可以重用的结果,而不必再次运行该查询。

+0

这工作,只需要将结果列变成一个数组。感谢大家的快速回复。 – MultiDim 2010-06-28 15:48:20

0

我想尝试

$MachineQuery = mysql_query("SELECT DISTINCT M.MachineID, M.MachineName FROM Machines M, Systems Sys, Symptoms Sym WHERE M.MachineID = Sys.MachineID AND Sys.SystemID 
=Sym.SystemID AND Sym.SymptomID IN (SELECT DISTINCT SymptomID FROM Tree WHERE SymptomID NOT IN (SELECT DISTINCT SymptomID FROM Tree WHERE LBNodeID = 0 OR RBNodeID = 0)) 
+0

问题是我在多个查询中使用结果。所以我宁愿不必多次拉同一信息。 – MultiDim 2010-06-28 15:35:19

相关问题