2010-06-28 17 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

相關問題