MySQL加入表WHERE子句

时间:2013-08-05 03:44:46

标签: mysql sql join

我有2个表:Member和Member_Card。 Member_Card有一个链接到Member Id列的列,因此Member与Member_Card有一对多的关系

我输出一个JSON,例如:

{
    "Name" : "Member Name",
    "Cards": [
            { "Card_No" : "1234"},
            { "Card_No" : "4321"}
         ]
}

Member和Member_Card都有一个LastModifiedDate列。

我的查询是这样的:

SELECT Name FROM Member 
LEFT JOIN Member_Card 
    ON Member_Card.Member = Member.id 
WHERE Member.LastModifiedDate >= sinceDate 
    OR Member_Card.LastModifiedDate >= sinceDate

这个查询的问题是它只会返回自fromDate以来修改过的Card / Member(即如果一个成员有2张牌而且一个被修改了,因为日期,它将只返回1张牌)。我希望退回会员及其所有卡片,无论是卡片还是会员本身都是在日期之后修改过的。

我怎么能这样查询?或者我需要运行2个查询吗?

1 个答案:

答案 0 :(得分:0)

SELECT member.*,c.* from member inner join (
SELECT distinct member.id as  mid FROM Member 
INNER JOIN Member_Card 
    ON Member_Card.Member = Member.id 
and ( Member.LastModifiedDate >= sinceDate  
    OR Member_Card.LastModifiedDate >= sinceDate ) ) a on a.mid=member.id
inner join member_card c on c.member=a.mid