我已经搜索过高低,似乎无法找到我想要的方法。我有一张桌子,里面有一些顾客,一些产品和他们的关系。
我想从查询的这一部分计算返回行的数量
SELECT id
FROM customer
WHERE customer.name = 'SMITH'
OR customer.name = 'JONES'
我还想返回与SMITH和JONES(或其他客户名称)匹配的ID。我想使用返回行的计数作为变量(表示为@var)。我只想返回与我的变量匹配的产品,ID和计数。
我的问题是:
我不想把它扔进PHP脚本等。
SELECT x.pId, p.productdesc, count(x.dId) as count
FROM
(
SELECT DISTINCT cId, pId
FROM Client
WHERE cId IN
(
SELECT id
FROM customer
WHERE customer.name = 'SMITH'
OR customer.name = 'JONES'
)
)x
JOIN Products p ON x.pId = p.id
GROUP BY x.pId
HAVING count = @var
谢谢,
中号
答案 0 :(得分:0)
这是对你问的内容的'文字'答案,因为你可以在having子句中使用子查询。但是,有了更多信息(样本数据和预期结果),可能有更好的方法来做你想做的事。
select x.pid, p.productdesc, count(x.pid) as count
from (select distinct cl.cid, cl.pid
from client cl
join customer cu
on cl.cid = cu.id
where cu.name in ('SMITH', 'JONES')) x
join products p
on x.pid = p.id
group by x.pid, p.productdesc
having count(x.pid) = (select count(*)
from customer
where name in ('SMITH', 'JONES'))