Mysql
如何在我能夠檢索所有數據的兩個表上執行內部聯接?
我需要有關 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
bar_recvd_details
SELECT * FROM bar_recvd_details
兩個表連接
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_id 上的表格
你成功地做到了這一點。您只是使用了錯誤的聯接類型。
我還想要來自 bar_recvd_details 的數據,即使 recvd_value 為 NULL
你不能用 INNER JOIN 做到這一點。相反,您需要使用 LEFT JOIN 才能從 JOIN 右側的表中返回 NULL,其中不存在數據。例如,
LEFT JOIN bar_recvd_details b
而不是INNER JOIN bar_recvd_details b
我想要每個表中的所有數據,其中 = ‘2019-06-18’ 來自各個表
你已經成功地做到了。但是,當移動到 LEFT JOIN 時,要滿足上述條件,您需要將該 WHERE 條件移動到 JOIN 條件。IE
ON a.item_id=b.item_id AND b.recvd_date = '2019-06-18'
SELECT a.item_cid, a.item_id, a.op_value, a.close_val, a.op_date, a.close_date, b.recvd_value FROM bar_opening_details AS a LEFT JOIN bar_recvd_details AS b ON a.item_id = b.item_id AND b.recvd_date = '2019-06-18' WHERE a.close_date = '2019-06-18';