0

ここにこのフィドルのような MySQL テーブルがあります: http://sqlfiddle.com/#!2/4ae5c/15

もう 1 つは 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 番目のテーブルに日付がないため、それらを正しくマージできません。

4

1 に答える 1

2

これを試してみてください私はあなたのテーブルに参加しましたが、日付をテキストとして保存するにはあまりにも悪いDATETIMEタイプのフィールドがあることに気付きました。また、カスタム条件を作成するために CASE を使用しました。その日付のWEEKのレコードを取得するには、1 つの日付を指定する必要があります。textdatedatetimemydates

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')

これがあなたのフィドルです

これがあなたが探しているものであることを願っています

于 2013-09-27T10:59:42.737 に答える