2010-05-09 106 views
7

在某些語言中(想到ColdFusion),您可以對先前查詢的結果集運行查詢。是否有可能做這樣的事情在PHP(與MySQL作爲數據庫)?php可以查詢以前查詢的結果嗎?

我有點想做的事:

$rs1 = do_query("SELECT * FROM animals WHERE type = 'fish'"); 
$rs2 = do_query("SELECT * FROM rs1 WHERE name = 'trout'"); 
+0

沒有真正回答你的問題,但對於使用SQL視圖? – Sylvain 2010-05-09 17:22:43

回答

6

有這樣的PHP沒有mysql的功能,但有一個爲它更先進的substitute

編輯:對於那些不知道查詢查詢是什麼的人來說,這就是這樣,有一些人會這樣做。使用AND運算符是****不是****相同的東西!如果我希望結果在用戶名='animuson'的腳本的一部分中,然後希望所有結果超出該查詢的狀態='1',那麼使用AND運算符運行另一個查詢是不合邏輯的,更符合邏輯地循環訪問PHP中的先前結果。無需閱讀關於他們爲什麼沒有被優先考慮的評論就可以停止投票,這只是一種懶惰。如果您對所談論的內容毫無頭緒,那麼您不應該首先投入或降低投票。

2

那麼,你可能要做到這一點不沾DB:

while($t = mysql_fetch_array($rs1)){ 
    if($t[name] == 'trout'){ 
     echo 'This is the one we\'re looking for!'; 
     break; 
    } 
} 
1

在PHP中,這將是非常低效的。你將不得不遍歷每一行,並檢查其nametrout。但是,有沒有什麼理由您不能這樣做

SELECT * FROM `animals` WHERE `type` = 'fish' AND `name` = 'trout' 

SQL?它會更快,更快。

+0

我不認爲你理解查詢查詢的目的。 – animuson 2010-05-09 17:07:56

+0

在PHP內存中搜索它不會比在大型數據庫上重新搜索更快嗎?但我可能是錯的。 – Robus 2010-05-09 17:08:54

+0

@Robus:可能。如果您通過初始魚查詢獲得1,000條結果中的100條,那麼使用PHP進行搜索要比使用其他查詢篩選1,000條結果要好得多。 – animuson 2010-05-09 17:10:08

0

使用AND關鍵字?

"SELECT * FROM animals WHERE type = 'fish' and name='trout'" 

此外,您還可以使用LINQ的PHP http://phplinq.codeplex.com/

+0

如果你想要查詢魚的結果然後加上鱒魚的結果怎麼辦?然後你必須運行兩個單獨的查詢... – animuson 2010-05-09 17:07:05

1

你也可以這樣做

select morestuff from (select stuff from table where a = b) where c = d; 
+1

這只是一個更復雜和使用AND運算符更慢的方式。 – animuson 2010-05-09 17:22:41

相關問題