0
我有这2个表:MySQL的加入与第二个表上相同的日期多次往返两个表
table1:
---------
UserID: Date: Day_status:
-----------------------------------
3004 2010-01-01 Normal
3004 2010-01-12 Normal
3004 2010-01-15 Ignore
3004 2010-01-18 Abnormal
4001 2010-01-09 Normal
4001 2010-01-11 Ignore
4001 2010-02-10 Normal
4001 2010-02-12 Abnormal
------------------------------------
table:2
-------
UserID: Date: Time Height
--------------------------------------------
3004 2010-01-01 08:01:02 35
3004 2010-01-01 09:01:12 32
3004 2010-01-01 18:01:02 40
3004 2010-01-02 07:01:02 20
3004 2010-01-02 08:01:02 30
3004 2010-01-02 10:01:02 10
3004 2010-01-08 07:01:02 20
3004 2010-01-08 08:01:02 30
3004 2010-01-08 10:01:02 10
3004 2010-01-12 07:01:02 30
3004 2010-01-12 09:01:02 50
3004 2010-01-12 18:01:02 30
3004 2010-01-15 07:01:02 30
3004 2010-01-15 09:01:02 50
3004 2010-01-15 18:01:02 30
3004 2010-01-18 07:01:02 30
3004 2010-01-18 09:01:02 50
3004 2010-01-18 18:01:02 30
4001 2010-01-08 07:01:02 30
4001 2010-01-08 08:01:02 30
4001 2010-01-08 09:01:02 40
4001 2010-01-08 13:01:02 30
4001 2010-01-09 07:01:02 30
4001 2010-01-09 08:01:02 30
4001 2010-01-09 09:01:02 40
4001 2010-01-11 08:01:02 30
4001 2010-01-11 09:01:02 30
4001 2010-01-11 18:01:02 30
4001 2010-01-12 08:01:02 30
4001 2010-01-12 09:01:02 30
4001 2010-01-12 18:01:02 30
4001 2010-01-13 08:01:02 30
4001 2010-01-13 09:01:02 30
4001 2010-01-13 18:01:02 30
4001 2010-02-12 08:01:02 30
4001 2010-02-12 09:01:02 30
4001 2010-02-12 09:01:02 30
-----------------------------------------------
请记住,在表1:用户可以有多个“日期的(用户3004有多个日期)。并且,在表2中,
用户可以具有多个“日期”并且每个日期可以具有多个“时间”。在表2中,用户3004具有3个不同的'日期'2011-01-01'的时间等等。
我想,这样,
1)所有从表2,只有从表1的数据Day_status数据包括在结果中加入这两个表。
2)如果没有“Day_status”为表2中表1日起,在结果日期Day_status将显示为“正常”(注:表2比表1更日期输入)
3)Day_status条目=“忽略”从表1也不会在最终结果
输出将是这样的:
UserID: Date: Time Height Day_status_val
---------------------------------------------------------------
3004 2010-01-01 08:01:02 35 Normal
3004 2010-01-01 09:01:12 32 Normal
3004 2010-01-01 18:01:02 40 Normal
3004 2010-01-02 07:01:02 20 Normal
3004 2010-01-02 08:01:02 30 Normal
3004 2010-01-02 10:01:02 10 Normal
3004 2010-01-08 07:01:02 20 Normal
3004 2010-01-08 08:01:02 30 Normal
3004 2010-01-08 10:01:02 10 Normal
3004 2010-01-12 07:01:02 30 Normal
3004 2010-01-12 09:01:02 50 Normal
3004 2010-01-12 18:01:02 30 Normal
3004 2010-01-18 07:01:02 30 Abnormal
3004 2010-01-18 09:01:02 50 Abnormal
3004 2010-01-18 18:01:02 30 Abnormal
4001 2010-01-08 07:01:02 30 Normal
4001 2010-01-08 08:01:02 30 Normal
4001 2010-01-08 09:01:02 40 Normal
4001 2010-01-08 13:01:02 30 Normal
4001 2010-01-09 07:01:02 30 Normal
4001 2010-01-09 08:01:02 30 Normal
4001 2010-01-09 09:01:02 40 Normal
4001 2010-01-12 08:01:02 30 Normal
4001 2010-01-12 09:01:02 30 Normal
4001 2010-01-12 18:01:02 30 Normal
4001 2010-01-13 08:01:02 30 Normal
4001 2010-01-13 09:01:02 30 Normal
4001 2010-01-13 18:01:02 30 Normal
4001 2010-02-12 08:01:02 30 Abnormal
4001 2010-02-12 09:01:02 30 Abnormal
4001 2010-02-12 09:01:02 30 Abnormal
-----------------------------------------------
我用下面的查询得到我的结果:
SELECT table2.UserID, table2.Date, table2.Time, table2.Height,
CASE
when table1.Day_status='Abnormal Day' then 'Abnormal Day'
when table1.Day_status='Normal Day' then 'Normal Day'
else 'Normal Day'
END as Day_status_val
FROM table2 LEFT JOIN table1
ON table2.UserID = table1.UserID and table1.Day_status !='Ignore'
但是,它给出了错误的结果。任何人都可以请帮我解决这个问题。请查看表1和表2中的数据以及我所需的输出。
对不起,延迟回复。非常感谢您的帮助。我会试试看。 – Tariq 2012-04-10 22:57:29