2013-09-27 82 views
0

兩個表的複雜的合併我有一個MySQL表像這樣的小提琴在這裏:http://sqlfiddle.com/#!2/4ae5c/15MySQL的不同日期格式

,而另一個具有從API不同:http://sqlfiddle.com/#!2/b7946e/1

我希望能有一個結果(周線圖)所示:

+----------+----------+----------+------------+------------+------------+ 
| date  | action | position | name  | day  | ID   | 
+----------+----------+----------+------------+------------+------------+ 
|17.06.2013| holiday | home  | Winkler,Mr.| Monday  | 0   | 
|18.06.2013| holiday | home  | Winkler,Mr.| Tuesday | 1   | 
|19.06.2013| work  | NYC  | Winkler,Mr.| Wednesday | 2   | 
|20.06.2013| work  | NYC  | Winkler,Mr.| Thursday | 3   | 
|21.06.2013| work  | NYC  | Winkler,Mr.| Friday  | 4   | 
|22.06.2013| work  | NYC  | Winkler,Mr.| Saturday | 5   | 
|23.06.2013| weekend | home  | Winkler,Mr.| Sunday  | 6   | 
+----------+----------+----------+------------+------------+------------+ 

是否有人對你有這樣的事的經驗嗎?

因爲第二張表中缺少日期,所以我不能正確合併它們。

回答

2

試試這個我已經加入你的表,發現有DATETIME字段類型text這是太糟糕,保存日期爲文本,這應該是作爲datedatetime但不過我已經使用STR_TO_DATE爲日期轉換,在下面查詢我已經使用了左連接爲mydates,也使用情況進行自定義條件,你必須提供一個日期,以便得到的WEEK記錄該日期

SELECT md.`mydate`, 
(CASE WHEN g.`ACTION` IS NULL && DAYNAME(md.`mydate`) ='Sunday' THEN 'Weekend' 
WHEN g.`ACTION` ='0' THEN g.`ACTIONTEXT` 
WHEN g.`ACTION` IS NULL THEN 'holiday' 
ELSE 'holiday' END) `action` 
, 
(CASE WHEN g.`POSITION` IS NULL THEN 'Home' ELSE g.`POSITION` END)`position` , 
g.`DRIVERNAME`,DAYNAME(md.`mydate`),g.`ID` FROM `mydates` md 
LEFT JOIN `geoimportroot` g ON (md.`mydate`= STR_TO_DATE(g.`DATETIME`, "%d.%m.%Y") ) 
WHERE WEEK(md.`mydate`)= WEEK('2013-06-17') 

Here is your fiddle

我希望這是你正在尋找的

+1

這正是我所需要的!謝謝。使我的一天。 –