[英]MySQL query from a query result in php
如果我想在php中查询查询结果,我该怎么办? 我有这个...
$result = mysql_query("SELECT * FROM tbl_x WHERE tbl_x.attribute = y");
现在我需要查询$ result来过滤我从查询中得到的结果。 请注意,我不想这样做......
$result2 = mysql_query("SELECT * FROM ( SELECT * FROM tbl_x WHERE tbl_x.attribute = y ) AS tbl_x1 WHERE tbl_x1... etc");
我想避免这种情况的原因是我在执行这样的查询时遇到“重复列”错误。
我正在寻找像......
$result = mysql_query("SELECT * FROM tbl_x");
$result2 = mysql_query_result($result);
您可以在搜索条件中应用多个术语,以AND
分隔:
$result = mysql_query("SELECT * FROM tbl_x
WHERE tbl_x.attribute = y
AND tbl_x.attribute2 = z");
重新评论你的意见。 听起来您正在使用实体 - 属性 - 值设计。
为了匹配多个属性,你必须做一些技巧。 通常,WHERE子句一次只能应用于一行。 但由于每个属性都存储在不同的行中,因此您需要执行以下两种解决方案之一:
将多行连接成一行,这样就可以在一个条件中对所有属性使用WHERE。
SELECT config_id FROM attributes AS s JOIN attributes AS c USING (config_id) JOIN attributes AS l USING (config_id) WHERE (s.attr, s.value) = ('size', 'M') AND (c.attr, c.value) = ('colour, 'green') AND (l.attr, l.value) = ('cloth', 'cotton);
搜索多个属性中的任何一个,然后如果匹配的行数等于您搜索的属性数,则可以找到所有这些属性。
SELECT config_id FROM attributes WHERE (attr, value) = ('size', 'M') OR (attr, value) = ('colour', 'green') OR (attr, value) = ('cloth', 'cotton') GROUP BY config_id HAVING COUNT(DISTINCT attr) = 3;
您仍然可以查询查询而不会出现“重复列”错误。 只需别名并命名列
$result2 = mysql_query("SELECT tbl_x1.col1, tbl_x1.col2,...etc FROM
(SELECT * FROM tbl_x WHERE tbl_x.attribute = y) AS tbl_x1
WHERE tbl_x1... etc");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.