3

编辑:详细说明

详细说明:

*在 table_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)

我需要检查(table_b 中的 memberID 计数与 table_a 中的每个 id 匹配并在 table_b = 1 中批准的成员 ID) - 是否大于 1

最终结果需要计算在 table_b 中有条目的成员数。

需要访问的表列示例

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

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

如果您需要更多详细信息,请告诉我。

4

5 回答 5

2

问题解决了

不得不倒过来想

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

我什至不需要查看 table_a,因为我正在根据 table_b 计算 memberID

有时解决方案是如此简单,就在您面前。

感谢所有的帮助!我希望这对将来的其他人有所帮助。

于 2012-04-20T20:27:24.037 回答
1

我假设您想要获取 table_a 中与 table_b 匹配的记录数,只要 table_b 中的值被批准。因此,我将加入 2 张桌子。内连接确保您只考虑两个表中的行,并且 where 语句处理批准的要求。

select count(a.id) 
from table_a a
join table_b b
on a.id = b.memberID
where b.approved=1
于 2012-04-20T02:27:48.880 回答
0
 SELECT b.ID, a.ID 

 FROM table_a a, table_b b 

 WHERE a.ID = b.ID AND b.ID = 1
于 2012-04-20T02:26:55.980 回答
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;

我相信这符合您的选择标准。

于 2012-04-20T02:35:54.680 回答
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
      )
于 2012-04-20T20:25:56.263 回答