如何查询数据库以获取待定的po列表。
我有四个表purchase_order
与此字段
`po_id` // primary key
`supplier_id`
'date`
`status`
'description`
`po_detail` with this fields
`pod_id` // primary key
`po_id`
`product_id`
`rate`
`qty`
`grn` with this fields
`grn_id` // primary key
`date`
`description`
`supplier_id`
`grn_detail` with this fields
`grnd_id` // primary key
`grn_id`
`rate`
`qty`
`product_id`
`po_id`
现在我选择po_detail中未输入grn_detail
的所有产品po_id
或输入grn_detail
,但grn_detail.qty
&lt; < / strong> po_detail.qty
具有相同的po_id
你能不能写一下这个问题。
如果可能请在sqlfiddle中使用demo进行编写
请查看SQLFIDDLE
答案 0 :(得分:1)
第一个答案很好,但我认为运营商可能没有什么变化。 类似&gt; =
的东西SELECT * FROM `po_detail`
WHERE
`po_detail`.`po_id` NOT IN
(SELECT `grn_detail`.`po_id` FROM `grn_detail`
WHERE (`grn_detail`.`po_id` <> `po_detail`.`po_id`) OR
(`grn_detail`.`qty` >= `po_detail`.`qty`))
AND your_other_filter_if_you_want_to
答案 1 :(得分:0)
试试这个:
SELECT * FROM `po_detail`
WHERE
`po_detail`.`po_id` NOT IN
(SELECT `grn_detail`.`po_id` FROM `grn_detail`
WHERE (`grn_detail`.`po_id` <> `po_detail`.`po_id`) OR
(`grn_detail`.`qty` > `po_detail`.`qty`))