2016-02-01 74 views
0

我正在使用MySQL和PHP。我有4張桌子。當其他表中沒有匹配時返回NULL行

第一個有日期。這臺被稱爲日期

+-------+-------------+----------+---------+ 
| id | unixTime | month | year | 
+------------------------------------------+ 
| 1 | 1443657600 | 10 | 2015 | 
|  |    |   |   | 
| 2 | 1443657600 | 11 | 2015 | 
|  |    |   |   | 
| 3 | 1443657600 | 12 | 2015 | 
|  |    |   |   | 
| 4 | 1443657600 | 01 | 2016 | 
|  |    |   |   | 
+-------+-------------+----------+---------+ 

表如果查詢SELECT * FROM analytics WHERE clientfk=36 AND metricfk=3下面會顯示。只有3個條目,因爲客戶#36在1月份不再是客戶。

此表被稱爲分析

+----------------------------------------------------------+ 
| id  datefk   value  clientfk metricfk| 
+----------------------------------------------------------+ 
| 156  1   "some value"  36   3 | 
|               | 
| 157  2  "another value"  36   3 | 
|               | 
| 157  3   "thrid value"  36   3 | 
|               | 
+----------------------------------------------------------+ 

我有另一個表稱爲指標,看起來像這樣。它是一個度量標準列表,將用於顯示所有日期的所有analytics的值。最後一個表僅僅是客戶

+--------------------------------+ 
| id   metric    | 
+--------------------------------+ 
| 1  "Some metric"  | 
|        | 
| 2  "Another metric"  | 
|        | 
| 3  "A third metric"  | 
|        | 
| 4  "One more metric"  | 
+--------------------------------+ 

+--------------------------------+ 
| id   clientName   | 
+--------------------------------+ 
| 1  "Some client"  | 
|        | 
| 2  "Another client"  | 
|        | 
| 3  "A third client"  | 
|        | 
| 4  "One more client"  | 
+--------------------------------+ 

我需要我的輸出是基於度量這些表的組合,但包括行,其中沒有數據。例如,客戶#36在1月份不再是客戶,所以我想要一個NULL行。就像這樣:

+------------------------------------------------+ 
| month  year  client  value  | 
+------------------------------------------------+ 
| 10   2015  36  "Some value" | 
|            | 
| 11   2015  36  "Another value" | 
|            | 
| 12   2015  36  "third value" | 
|            | 
| 1   2016  36   NULL  |<-- this row has NULL 
|            | 
| 10   2015  37  "value 1"  | 
|            | 
| 11   2015  37  "value 2"  | 
|            | 
| 12   2015  37  "value"  | 
|            | 
| 1   2016  37 "One more value" | 
+------------------------------------------------+ 

我試過很多東西,JOINLEFT JOINCOALESCEasking the wrong question,但我的MySQL的知識通常僅限於SELECT * FROM table

回答

1

嘗試LEFT OUTER JOIN。這裏更多的信息:http://dev.mysql.com/doc/refman/5.7/en/join.html

編輯 試試這個SQL:

Select * from dates 
LEFT OUTER JOIN analytics on analytics.datefk = dates.id 
LEFT OUTER JOIN clients on analytics.clientfk = client.id 
+0

這不這樣做,該行已丟失,不爲NULL – alanj

相關問題