2010-05-09 99 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

相关问题