查询查询- MySQL和PHP


Query a Query - MySQL and PHP

我最近在做一个项目*,这让我问了这个问题。尽管从那以后我找到了另一种解决方案,但我仍然好奇我所设想的事情是否有可能实现。

本质上,我想知道是否有办法在php中对MySQL查询结果执行MySQL查询。例如:

$result = mysql_query("SELECT * FROM foo WHERE bar=".$barValue);

AND THEN,能够在$result上执行多个查询:

$newResult = mysql_query("SELECT * FROM $result WHERE otherBar=".$barValue);

$otherNewResult = mysql_query("SELECT * FROM $result WHERE otherOtherBar=".$barValue." ORDER BY foobar ASC");

等等…

我意识到我可以用新的WHERE语句和ORDER BY s附加原始查询,但这会导致我不必要地查询数据库,并阻止我编写更多面向对象的代码(因为我不能传递要查询的结果,而是必须在每个函数中查询数据库…)

任何建议、代码片段、框架或漫谈都非常感谢。

*顺便说一句,我的项目是必须查询一个大型数据库的人出生在某些年龄组,然后查询这些年龄组的不同人口统计数据。

编辑

不,编写一个自定义函数来查询数据库是不值得的面向对象(和可修改性),它会给我

您可以在同一个SQL查询中执行嵌套查询,并将PHP排除在查询之外:

'SELECT * FROM (SELECT * FROM foo WHERE bar="something") AS q1 WHERE q1.bar2 = "something else"'

这个问题已经有了答案。然而,下面的解释将帮助那些可能有兴趣知道细节的人。

嵌套查询/子查询:

子查询也称为嵌套查询。子查询是另一个语句中的SELECT语句。MySQL支持所有SQL标准,并提供MySQL特有的功能。

为什么要使用Subquery:

  1. 子查询是结构化的,可以隔离语句
  2. 的每个部分。
  3. 子查询比复杂的连接和联合更具可读性
  4. 子查询提供了执行操作的替代方法,否则将需要复杂的连接和联合

子查询返回:

子查询可以返回单个值、单行、单列或表。这些子查询称为标量、列、行和表子查询。

参考:http://dev.mysql.com/doc/refman/5.7/en/subqueries.htmlhttp://www.w3resource.com/sql/subqueries/nested-subqueries.php