這是我第一篇文章,已經在尋求幫助:/。GROUP BY與MAX(時間戳)在JOIN表
我真的很努力地創造這份報告,我在過去的幾個月裏一直在學習mySQL,我需要幫助。
我有4個表有外鍵和總之我需要檢索的地方最近的創建日期的表2的值:
表1
ID created Date2 Amount foreignkey1
1 6/14/17 12:08 7/13/17 0 3112602
2 6/14/17 12:08 7/20/17 0 3112602
3 6/14/17 12:08 7/20/17 1000 3112602
4 6/14/17 12:18 7/20/17 3631 3112602
5 6/14/17 13:06 7/20/17 6483 3112602
6 6/2/17 10:06 7/1/17 0 3099667
7 6/2/17 10:06 7/16/17 0 3099667
8 6/30/17 6:54 7/16/17 10163 3099667
9 6/30/17 6:55 7/16/17 10163 3099667
表2
ID Created Date3 foreignkey2
1 10/4/11 17:46 NULL 1373280
2 2/6/12 21:10 NULL 1373280
3 11/16/12 20:23 NULL 1373280
4 3/19/13 12:03 NULL 1373280
5 5/27/17 7:48 NULL 1373280
6 5/30/17 13:56 NULL 1373280
7 5/30/17 14:32 7/1/17 1373280
8 6/2/17 8:06 7/16/17 1373280
8 3/19/09 16:34 NULL 1372612
8 1/18/17 18:12 NULL 1372612
8 6/14/17 6:24 7/20/17 1372612
表3
ID foreignkey1 foreignkey2
1 1372612 3112602
2 1373280 3099667
表4
ID foreignkey1 country
1 1372612 Mordor
2 1373280 Mordor
我需要的是檢索像這樣的查詢:
foreignkey1 foreignkey2 date2 date3 country
3112602 1372612 7/20/17 7/20/17 Mordor
3099667 1373280 7/16/17 7/16/17 Mordor
我需要加入使用表3兩外鍵和檢索WHERE創建既DATE2和DATE3每張桌子上最近的日期。
我想是這樣的:
SELECT tb1.foreignkey1, tb2.foreignkey2, tb1.date2, tb2.date3, tb3.country FROM table1 tb1
LEFT JOIN table3 tb3 on tb1.foreignkey1=tb3.foreignkey1
LEFT JOIN table2 tb2 on tb2.foreignkey2=tb3.foreingkey2
LEFT JOIN table4 tb4 on tb2.foreignkey1=tb4.foreingkey4
WHERE tb1.created>"2017-06-01" AND tb4.country="Mordor" AND tb1.created IN (SELECT MAX(ca.created)) AND tb2.created = (SELECT MAX(tb2.created)) AND tb1.date2 >"2017-06-01" AND tb2.date3 >"2017-06-01" GROUP BY cu.ID;
不幸的是我沒有在這個使命,我需要幫助:(
感謝
真棒!這有助於理解子查詢。我現在能夠完成查詢並獲取所需的數據。 非常感謝! :d –