我今天已經閱讀了很多MYSQL組合表,但沒有一個符合我的問題。任何人都可以幫助我實現我的願望結果如下?MYSQL加入兩個具有相同字段值的表字段,但如果其他字段與另一字段不匹配,則仍然包含
表1:
|--------------------| | tbl1 | |--------------------| |user_id|points|year | |--------------------| | 1 | 3.2 | 2001| | 1 | 2.2 | 2002| | 1 | 3.8 | 2003| | 1 | 3.6 | 2005| | 2 | 1.2 | 2001| | 2 | 1.2 | 2002| | 2 | 1.2 | 2003| | *etc... | |--------------------|
表2:
|--------------------| | tbl2 | |--------------------| |user_id|amount|year | |--------------------| | 1 | 6.2 | 2001| | 1 | 9.2 | 2002| | 1 | 2.8 | 2003| | 1 | 7.6 | 2004| | 2 | 3.2 | 2001| | 2 | 8.2 | 2002| | 2 | 6.2 | 2003| | *etc... | |--------------------|
我只想要得到的user_id1 我有以下查詢,我試過很多查詢的組合,但沒」沒有得到任何。
SELECT `tbl1`.`points`, `tbl2`.`amount`, `tbl1`.`year` FROM ( SELECT * FROM `tbl1` WHERE `user_id` = 1 ORDER BY `year` DESC ) AS `tbl1` INNER JOIN ( SELECT * FROM `tbl2` WHERE `user_id` = 1 ORDER BY `year` DESC ) AS `tbl2` ON `tbl2`.`year` = `tbl1`.`year`
我的問題查詢是,我使用:
ON `tbl2`.`year` = `tbl1`.`year`
將只返回匹配的一年。所以是的,我卡住了。
期望的結果:
|----------------------------| | JOINED/COMBINED | |----------------------------| |user_id|amount|points| year | |----------------------------| | 1 | 6.2 | 3.2 | 2001 | | 1 | 9.2 | 2.2 | 2002 | | 1 | 2.8 | 3.8 | 2003 | | 1 | 7.6 | Null | 2004 | | 1 | Null | 3.6 | 2005 | | *etc... | |----------------------------|
在這種情況下,問題是,表2 2004年有table1中同時擁有2005年兩者沒有其他。但我仍然希望按年份顯示它們。
如果它不能與查詢進行單獨我也將接受PHP腳本,使這個做,但查詢是我所關注這裏更多..
那你試試這麼遠嗎?請向我們展示您的努力。 –
聽起來像一個'OUTER JOIN'給我 – RealCheeseLord
@diiN__________我編輯了我的問題。我添加了我自己的查詢,我嘗試了許多查詢之一。 –