我必须来问这个,因为我已经生气,哭泣和一切,因为这真的杀了我。我讨厌SQL。但必须这样做。网站使用SQL。
我有这些表(缩写为必要的而不是真正的SQL):
CREATE TABLE deliverer(d_id INT PRIMARY KEY, name VARCHAR(80));
CREATE TABLE article(a_id INT PRIMATY KEY, brand VARCHAR(80));
CREATE TABLE delivers(d_id FOREIGN KEY(deliverer), a_id FOREIGN KEY(article));
我需要为每个brand
deliverers
提供最多文章的人SELECT brand, MAX(cnt)
FROM
(SELECT COUNT(a.a_id) AS cnt, a.brand, d.d_id, d.name
FROM derliverer d, delivers l, article a
WHERE a.a_id = l.a_id AND l.d_id = d.d_id
GROUP BY a.brand, d.d_id, d.name)
GROUP BY brand;
。经过两个小时的思维扭曲之后,我才走到这一步:
GROUP BY brand
我真的,真的,真的没有得到关于SQL的原因是它不让我SELECT
和 d.name, d.d_id
{ {1}}。这真的没有意义。
在我跳出窗外之前请帮助我。
答案 0 :(得分:0)
我真的,真的,真的没有得到关于SQL的原因是它不让我BY GROUP品牌和SELECT d.name,d.d_id。这真的没有意义。
因为如果这样做,计数将针对每个不同的d.name,d.d_id。这不是你想要的。
您肯定希望阅读一些tutorials有关群组的工作方式。
我需要为每个品牌提供最多文章的提供者。
在这种情况下,您需要以下内容:
select brand_id, count(*) as top_deliverer, deliverer_id, deliverer.etc.
from some stuff
group by brand_id, deliverer_id, deliverere.etc
order by top_deliverer desc