我從3個表獲取數據,並加入他們(我將縮短給予相關的部分信息)MySQL的加入出現空值
表項
date/id/...
5/1/2017/1
5/2/2017/2
5/3/2017/3
.
.
.
6/1/2017/42
表engdailydata
entry_id/enginehrs/...
1/654186
2/655000
3/660000
.
.
.
42/800000
表24hrlog
date/air1/..
6/1/2017/4200
我試圖列出所有日期都在任一條目或24hr日誌表中的列表
SQL的工作原理是顯示除日期以外的所有值(如果其中一箇中缺少日期,空值)
SELECT
`entry`.`date` AS `date1`,
`24hrlog`.`date` AS `date2`,
engdailydata`.`enginehrs1` AS `enginehrs1`,
`24hrlog`.`air1` AS `air1`
FROM
(`engdailydata`
LEFT JOIN (`24hrlog`
JOIN `entry` ON ((`entry`.`date` = `24hrlog`.`date`))) ON
((`entry`.`entry_id` = `engdailydata`.`entry_id`)))
例如運行這個我返回了40行。
date1/date2/enginehrs1/air1
NULL/NULL/654186 /NULL
NULL/NULL/655000 /NULL
NULL/NULL/660000 /NULL
.
.
.
6/1/2017/6/1/2017/800000/4200
我想獲得
date1/date2/enginehrs1/air1
5/1/2017/NULL/654186 /NULL
5/2/2017/NULL/655000 /NULL
5/3/2017/NULL/660000 /NULL
.
.
.
6/1/2017/6/1/2017/800000/4200
編輯爲主,後期以進一步澄清 –
你的查詢有一個很奇怪的連接語法,我認爲是無效的,應該被DBMS拒絕。至於你的表:一個'entry'由它的ID標識。每個「入口」都有一個日期。對於每個'entry.id',我們可以在'engdailydata'中找到零個,一個或多個記錄。還有一個包含日期的「24hrlog」表。現在,如果enghrilydata.date存在於「24hrlog」中,或者沒有,則顯示所有'engdailydata'數據以及'24hrlog'數據的所有'entry'數據。它是否正確? –