我需要有关 MySQL 查询的帮助。
bar_opening_details
有收盘和开盘库存bar_recvd_details
已收到股票
当我收到购买的股票时,我将其插入bar_recvd_details
. 接下来,我将更新商品close_val
的bar_opening_details
期末库存值。
当我将这两个表连接在一起时,从返回的行bar_opening_details
数等于从返回的行数bar_recvd_details
。IE 中不匹配的行bar_opening_details
不再返回。
小提琴在这里可用
下面是我想要的输出。
- 我想加入表格
item_id
- 我想要每个表中的所有数据,其中
<date column> = '2019-06-18'
来自各个表 - 我也想要来自 的数据
bar_recvd_details
,即使recvd_value IS NULL
bar_opening_details
SELECT * FROM bar_opening_details
item_cid | item_id | 操作值 | close_val | op_date | 关闭日期 |
---|---|---|---|---|---|
2 | 78 | 2 | 88 | 2019-06-18 | 2019-06-18 |
2 | 79 | 28 | 103 | 2019-06-18 | 2019-06-18 |
2 | 97 | 0 | 96 | 2019-06-18 | 2019-06-18 |
6 | 456 | 30 | 48 | 2019-06-18 | 2019-06-18 |
6 | 457 | 130 | 155 | 2019-06-18 | 2019-06-18 |
6 | 484 | 1 | 46 | 2019-06-18 | 2019-06-18 |
6 | 495 | 15 | 61 | 2019-06-18 | 2019-06-18 |
6 | 523 | 1 | 12 | 2019-06-18 | 2019-06-18 |
6 | 529 | 9 | 32 | 2019-06-18 | 2019-06-18 |
6 | 530 | 54 | 98 | 2019-06-18 | 2019-06-18 |
6 | 533 | 0 | 24 | 2019-06-18 | 2019-06-18 |
6 | 630 | 35 | 77 | 2019-06-18 | 2019-06-18 |
6 | 631 | 31 | 122 | 2019-06-18 | 2019-06-18 |
6 | 635 | 5 | 47 | 2019-06-18 | 2019-06-18 |
6 | 636 | 34 | 71 | 2019-06-18 | 2019-06-18 |
bar_recvd_details
SELECT * FROM bar_recvd_details
item_cid | item_id | recvd_date | recvd_value |
---|---|---|---|
6 | 637 | 2019-06-19 | 96 |
6 | 635 | 2019-06-19 | 48 |
6 | 637 | 2019-06-18 | 96 |
6 | 635 | 2019-06-18 | 48 |
6 | 636 | 2019-06-18 | 48 |
6 | 457 | 2019-06-18 | 48 |
6 | 456 | 2019-06-18 | 24 |
6 | 1432 | 2019-06-18 | 96 |
6 | 484 | 2019-06-18 | 48 |
6 | 523 | 2019-06-18 | 12 |
6 | 533 | 2019-06-18 | 24 |
4 | 79 | 2019-06-19 | 24 |
2 | 78 | 2019-06-19 | 24 |
6 | 529 | 2019-06-18 | 24 |
两个表连接
SELECT
bar_opening_details.item_cid,
bar_opening_details.item_id,
bar_opening_details.op_value,
bar_opening_details.close_val,
bar_opening_details.close_date,
bar_recvd_details.recvd_value,
bar_recvd_details.recvd_date,
bar_recvd_details.item_id
FROM
bar_opening_details
LEFT JOIN bar_recvd_details
ON bar_recvd_details.item_id = bar_opening_details.item_id
where bar_opening_details.close_date = '2019-06-18'
item_cid | item_id | 操作值 | close_val | 关闭日期 | recvd_value | recvd_date | item_id |
---|---|---|---|---|---|---|---|
2 | 79 | 28 | 103 | 2019-06-18 | 24 | 2019-06-19 | 79 |
2 | 78 | 2 | 88 | 2019-06-18 | 24 | 2019-06-19 | 78 |
2 | 97 | 0 | 96 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 457 | 130 | 155 | 2019-06-18 | 48 | 2019-06-18 | 457 |
6 | 456 | 30 | 48 | 2019-06-18 | 24 | 2019-06-18 | 456 |
6 | 484 | 1 | 46 | 2019-06-18 | 48 | 2019-06-18 | 484 |
6 | 523 | 1 | 12 | 2019-06-18 | 12 | 2019-06-18 | 523 |
6 | 529 | 9 | 32 | 2019-06-18 | 24 | 2019-06-18 | 529 |
6 | 495 | 15 | 61 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 533 | 0 | 24 | 2019-06-18 | 24 | 2019-06-18 | 533 |
6 | 530 | 54 | 98 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 630 | 35 | 77 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 635 | 5 | 47 | 2019-06-18 | 48 | 2019-06-19 | 635 |
6 | 635 | 5 | 47 | 2019-06-18 | 48 | 2019-06-18 | 635 |
6 | 636 | 34 | 71 | 2019-06-18 | 48 | 2019-06-18 | 636 |
6 | 631 | 31 | 122 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
下面是我想要的输出
item_cid | item_id | 操作值 | close_val | 关闭日期 | recvd_value | recvd_date | item_id |
---|---|---|---|---|---|---|---|
2 | 97 | 0 | 96 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 457 | 130 | 155 | 2019-06-18 | 48 | 2019-06-18 | 457 |
6 | 456 | 30 | 48 | 2019-06-18 | 24 | 2019-06-18 | 456 |
6 | 484 | 1 | 46 | 2019-06-18 | 48 | 2019-06-18 | 484 |
6 | 523 | 1 | 12 | 2019-06-18 | 12 | 2019-06-18 | 523 |
6 | 529 | 9 | 32 | 2019-06-18 | 24 | 2019-06-18 | 529 |
6 | 495 | 15 | 61 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 533 | 0 | 24 | 2019-06-18 | 24 | 2019-06-18 | 533 |
6 | 530 | 54 | 98 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 630 | 35 | 77 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
6 | 635 | 5 | 47 | 2019-06-18 | 48 | 2019-06-18 | 635 |
6 | 636 | 34 | 71 | 2019-06-18 | 48 | 2019-06-18 | 636 |
6 | 631 | 31 | 122 | 2019-06-18 | (无效的) | (无效的) | (无效的) |
你成功地做到了这一点。您只是使用了错误的联接类型。
你不能用 INNER JOIN 做到这一点。相反,您需要使用 LEFT JOIN 才能从 JOIN 右侧的表中返回 NULL,其中不存在数据。例如,
LEFT JOIN bar_recvd_details b
而不是INNER JOIN bar_recvd_details b
你已经成功地做到了。但是,当移动到 LEFT JOIN 时,要满足上述条件,您需要将该 WHERE 条件移动到 JOIN 条件。IE
ON a.item_id=b.item_id AND b.recvd_date = '2019-06-18'
小提琴