【发布时间】:2015-04-24 17:25:10
【问题描述】:
我正在处理的项目有问题。
我有 2 张桌子。第一个表是workorder。此表由以下列组成:
- 身份证
- relation_code
- 生成
- 准备出口
第二张表是workorder_records。列:
- 身份证
- workorder_id
- 说明
- 已批准
我需要选择每个 workorder 生成 = 0 和 exportready = 0 及其记录计数。但是,只有批准 = 0 和描述 != '' 的记录。
我已经为它写了这个查询:
SELECT *, (SELECT COUNT(*) FROM workorder_records
WHERE workorder_records.approved = 0
AND workorder_records.workorder_id = workorder.id
AND workorder_records.description != ''
) as totalunapproved
FROM workorder
WHERE workorder.generated = 0
AND workorder.exportready = 0
当我在 phpMyAdmin 中执行此操作时,我得到了正确的结果。当我通过连接到同一个数据库的 PHP 脚本运行它时,我得到了不同的结果。例如,workorder_records.description 实际上为空但仍由查询函数返回的结果。
SQL 小提琴链接:http://sqlfiddle.com/#!2/ea8aa/3
感谢任何帮助。
编辑:我通过在 PHP 中进行检查解决了这个问题。这当然不理想,但我只是不明白为什么条件子查询在 PHPMyAdmin 中有效,而不是在我的 PHP 脚本中。
【问题讨论】:
-
这个查询应该做你想做的,结果应该是稳定的。你能设置一个 SQL Fiddle 来演示这个问题吗?
-
SQL 小提琴:sqlfiddle.com/#!2/ea8aa/3
-
为什么使用我们的选择?这似乎可以通过标准连接来完成。
-
@MikeBrant 这会改变查询的结果吗?如果是这样,我将如何将此查询更改为 JOIN 查询?
-
请检查本地和live中每一列的数据类型是否相同?
标签: php mysql phpmyadmin