2012-04-20 46 views
1

编辑:详细描述选择计数从一个表(ID),其中该ID是存在于另一个表MYSQL

详细说明:

*在表-A有100名成员,但只有其中50人在table_b中有记录,并且只有25人在table_b中有记录,其中批准= 1因此,我将需要返回的值是25 *

嘿大家这里是我正在查询的查询解决它将需要返回一个结果计数,所以我可以通过mysql_result($ query,0)进行访问。

SELECT COUNT(id) FROM table_a WHERE (THIS IS WHERE I AM STUCK) 

我需要检查(在表-B MEMBERID的计数WHERE MEMBERID匹配表-A每个ID和批准表-B = 1) - 大于1个

最终结果必须是一个计数在table_b中有一个条目的成员数量。

需要访问

table_a 
----------------- 
id 

table_b 
------------------ 
id 
memberID 
approved 

让我知道如果你需要任何更多的细节表列的样品。

+0

好的,你在寻找表中的ID大于1还是在两个表中大于1? – Jack 2012-04-20 02:38:45

+0

是否正确地说结果应该是a中具有相应条目的行中的行数(a.id = b.memberId和b.approved = 1)? – sharakan 2012-04-20 14:39:19

+0

@ukritic - 您最终需要返回“count(table_a.id = table_b.MemberID AND table_b.approved = 1)”的值,并且只有当该计数为“> 1”时? – 2012-04-20 15:10:50

回答

0
SELECT b.ID, a.ID 

FROM table_a a, table_b b 

WHERE a.ID = b.ID AND b.ID = 1 
+0

根据OP,他需要“...在table_b = 1中批准”的条目。即b.APPROVED = 1,而您的b.ID = 1。 – sharakan 2012-04-20 14:37:20

+0

同意@sharakan - 测试是针对“table_b.approved”= 1,而不是“b.ID”。 – 2012-04-20 15:09:00

1

我假设你想得到table_a中与table_b匹配的记录数,只要table_b中的值被批准。因此,我会加入这两个表格。内部联接确保您只考虑两个表中的行,并且where语句负责批准的需求。

select count(a.id) 
from table_a a 
join table_b b 
on a.id = b.memberID 
where b.approved=1 
+0

这会返回错误的数字,它会返回table_b中找到的项目总数,而不是满足要求的table_a中的总数。 – MadScientist 2012-04-20 20:04:30

+1

我认为如果将COUNT(a.id)'改为COUNT(DISTINCT a.id)' – 2012-04-20 20:27:30

0

我在SQL有点生疏,但可以通过这个在这样的查询指定两个表来实现:

SELECT COUNT(DISTINCT table_a.id) 
    FROM table_a, table_b 
    WHERE table_a.id = table_b.MemberID 
    AND table_b.approved = 1; 

我相信能够满足您的选择标准。

+0

,这将返回相同的数字,看起来像table_b记录的总数,而不是计数table_a符合条件的记录 – MadScientist 2012-04-20 20:08:09

0
SELECT COUNT(*) AS cnt 
FROM table_a AS a 
WHERE EXISTS 
     (SELECT * 
     FROM table_b AS b 
     WHERE b.memberID = a.id 
      AND b.approved = 1 
    ) 
0

问题解决了

不得不向后想起来

SELECT COUNT(DISTINCT memberID) 
    FROM table_b 
    WHERE approved =1 

我不需要连看表-A看到,因为我根据表-B计数MEMBERID

有时候,解决方案非常简单,恰到好处。

感谢您的帮助!我希望这对未来有帮助。

+0

这与您的问题规范相同,只有一个细节但至关重要的细节:table_b.memberid的任何值也出现在table_a.id中。如果你不告诉他们,哪一个课程没有人知道。 – 2012-04-20 20:31:18

+0

此查询返回我正在查找的结果。基本上我不需要查询table_a,因为我只需要从table_b中计数DISTINCT memberID。在我重新思考我真正需要的信息后,我很清楚查询中不需要table_a。 – MadScientist 2012-04-20 20:38:57

+0

是的,我的意思是说它是正确的。 'DISTINCT'后面也删除了不需要的括号。 – 2012-04-20 20:42:07

相关问题