2016-05-16 75 views
1

我有一个两个表一个是Userregistration,第二个是user_verificationcode,从中我只能得到那些其电子邮件和移动状态为1的记录。以下是我的表格结构如何从两个表中有多个条件得到记录

放在userRegistration表

........................................ 
id  fullname mobile_no  email 
......................................... 
5  varun   12344567 [email protected] 
6  nitin   12345678 [email protected] 

user_verificationcode

............................................. 
id  user_id  codetype  status 
............................................ 
1  5   email   0 
2  5   mobile   1 
3  6   email   1 
4  6   mobile   1 

我想这种输出

........................................ 
id  fullname mobile_no  email 
......................................... 
6  nitin   12345678 [email protected] 

为此,我用下面的查询,但它不工作,我没有得到如何实现这一点。

SELECT * FROM Userregistration 
INNER JOIN user_verificationcode ON Userregistration.`id`=user_verificationcode.`user_id` 
where user_verificationcode.`codetype`='email' 
and user_verificationcode.`status`='1' 
and user_verificationcode.`codetype`='mobile' 
and user_verificationcode.`status`='1' 

回答

4
SELECT r.* 
FROM Userregistration r 
INNER JOIN user_verificationcode ve ON r.id = ve.user_id 
            and ve.codetype = 'email' 
            and ve.status = 1 
INNER JOIN user_verificationcode vm ON r.id = vm.user_id 
            and vm.codetype = 'mobile' 
            and vm.status = 1 

SELECT * 
FROM Userregistration 
where id in 
(
    select user_id 
    from user_verificationcode 
    group by user_id 
    having sum(codetype = 'email' and status = 1) > 0 
     and sum(codetype = 'mobile' and status = 1) > 0 
) 
+0

Thanku这么多的工作在mysql中相当可观的专家 –

1

你可能只想返回Userregistration领域,既然你已经知道了包含在user_verificationcode表中的信息。在这种情况下,你可以使用下面的查询:

SELECT t1.* 
FROM Userregistration AS t1 
JOIN ( 
    SELECT user_id 
    FROM user_verificationcode 
    WHERE codetype IN ('mobile', 'email') 
    GROUP BY user_id 
    HAVING COUNT(DISTINCT codetype) = 2 AND SUM(status <> 1) = 0 
) AS t2 ON t1.id = t2.user_id 
1

你可能会喜欢做这样的事情

SELECT Userregistration.id, Userregistration.fullName, Userregistration.mobile_no, 
Userregistration.email FROM Userregistration 
INNER JOIN user_verificationcode 
ON Userregistration.id=user_verificationcode.user_id 
WHERE user_verificationcode.codetype='email' AND user_verificationcode.status = 1 
0
SELECT Userregistration.id, 
     Userregistration.fullName, 
     Userregistration.mobile_no, 
     Userregistration.email 
FROM Userregistration 
INNER JOIN user_verificationcode ON  
     Userregistration.id=user_verificationcode.user_id AND  
     user_verificationcode.status=1 
WHERE user_verificationcode.codetype='email' AND   
     user_verificationcode.codetype='mobile' 
相关问题