首页 > 解决方案 > PHP SQL 查询未提取预期结果

问题描述

我有一个这样的查询:

SELECT `value` FROM `thisTable` WHERE (`field` = 'category' AND `value` = '$catvalue') OR (`field` = 'subcat' AND `value` > '') GROUP BY `name_id` HAVING count(*) >= '2'

这是从这个表中提取数据:

------------------------------
| name_id | field    | value |
------------------------------
| 1       | category | cat1  |
| 1       | subcat   | sub3  |
| 2       | category | cat1  |
| 2       | subcat   | sub2  |
| 3       | category | cat1  |
| 3       | subcat   | sub1  |
------------------------------

我的查询在 PHPMyAdmin 中完美运行,因为它列出了子类别的值。但是当我尝试在我的 PHP 查询中提取相同的东西时,我只会得到类别的值。

所以 PHPMyAdmin 会显示sub3, sub2, sub1我想要的,但我的查询会显示cat1, cat1, cat1

我的代码与上面的查询相同,但结果不同。

$result = $connect->query("SELECT `value` FROM `thisTable` WHERE (`field` = 'category' AND `value` = '$catvalue') OR (`field` = 'subcat' AND `value` > '') GROUP BY `name_id` HAVING count(*) >= '2'");
while($data = $result->fetch()) {
    $array[] = $data['value'];
}

我看不到下一步去哪里获得 PHPMyAdmin 显示的结果!我猜这与它有关,fetch()但据我所知。

提前感谢您的任何见解!

更新:将其作为自己的 JOIN 来做呢?我该怎么做?这是我必须让它发挥作用的唯一其他想法。

标签: phpsql

解决方案


嗯,这是一个答案!但不是它应该是的。我决定将查询分成两部分:

  • 首先拉类别...

    name_idthisTableWHERE中选择field= '类别' AND value= '$catvalue'

  • 然后将子类别拉到里面

    valuethisTableWHERE中选择name_id= '$name_id' AND field= 'subcat' AND value!= ''

不是最简洁的解决方案,但它有效:)


推荐阅读