php - 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 来做呢?我该怎么做?这是我必须让它发挥作用的唯一其他想法。
解决方案
嗯,这是一个答案!但不是它应该是的。我决定将查询分成两部分:
首先拉类别...
name_id
从thisTable
WHERE中选择field
= '类别' ANDvalue
= '$catvalue'然后将子类别拉到里面
value
从thisTable
WHERE中选择name_id
= '$name_id' ANDfield
= 'subcat' ANDvalue
!= ''
不是最简洁的解决方案,但它有效:)
推荐阅读
- chromedp - 使用 chromedp 从 HTML 字符串渲染 PNG 对象
- python - ffmpeg rtmp 在 youtube 上播放速度低于 1x
- javascript - Python中等效的ee.Image.not()是什么
- python - 具有对数采样时间间隔的 Pandas 数据帧插值
- python - Selenium 不会返回文本
- linux - perl 中的打开命令
- azure - Instagram ?__a=1 查询:为什么我得到登录页面而不是 JSON?
- node.js - nodejs 10 异步迭代的实际例子,比如比stream更能解决什么样的问题?
- python - Python 过程或面向对象
- javascript - 将屏幕重新编码视频块 blob 转换为多部分,以便在 Api 中作为多部分发送