SELECT查询中的MySQL WHERE子句不按预期运行

时间:2014-06-26 14:12:58

标签: mysql

肯定是用户错误 - 基础数据或MySQL没有任何问题。

我在WHERE子句中尝试做的是从所有批次(包含在material_batch_track中)中选择所有material_batch_id&SUM数量,其中stocktakes_items中当前没有相应的条目给定material_batch_id的stocktakes_items中的一个或多个条目但是它已被检查并已计为0,因此不需要再次检查

尽管3个办公桌上碰到了我的头,但查询仍然没有完全符合我的要求,而且我有理由相信问题出在我WHERE子句后半部分的结构上。

我还没有包含所有基础数​​据结构,因为我99%确信这是一个查询结构问题,但如果有人认为不是这样,请告诉我,我会更新我的问题。

房子里有天才能看到我出错的地方吗?

SELECT mb.material_batch_id AS mbid, SUM( mbt.qty ) AS expected_qty
FROM materials_batch AS mb
LEFT JOIN materials_batch_track mbt ON mbt.mbid = mb.material_batch_id
LEFT JOIN stocktakes_items sti ON sti.mbid = mb.material_batch_id
LEFT JOIN stocktakes st ON st.stid = sti.stid
  WHERE mb.material_id =2
    AND mb.batch_status
    IN (
      'Arrived',  'Completed'
    )
    AND mb.batch_type = 'whole'
    AND sti_id IS NULL 
    OR (
      qty_recorded !=0
      AND qty_expected !=0
    )
    AND st.status NOT 
    IN (
      'Cancelled',  'In Progress'
    )
GROUP BY mbid

查询只返回没有结果,这是不正确的。我认为围绕...... AND sti_id IS NULL OR ( )'

领域存在问题

(在我看来)问题区域的表结构是:

mysql> SELECT * FROM stocktakes_items;
+--------+------+------+--------------+--------------+
| sti_id | stid | mbid | qty_expected | qty_recorded |
+--------+------+------+--------------+--------------+
|      1 |    1 |    1 |            0 |            0 |
|      2 |    1 |    3 |            1 |            0 |
|      3 |    1 |    9 |            4 |            0 |
|      4 |    1 |   13 |            3 |            0 |
+--------+------+------+--------------+--------------+
4 rows in set (0.00 sec)

提前谢谢大家。

0 个答案:

没有答案