mysqlデータベースのSQLクエリを構築するためのヘルプが必要です。 2テーブルは次のようになります。SQLクエリのヘルプ+カウント+ MAX
tblcities (id,name)
tblmembers(id,name,city_id)
ここで、「メンバー」の数が最大である「都市」の詳細を取得します。
よろしく
mysqlデータベースのSQLクエリを構築するためのヘルプが必要です。 2テーブルは次のようになります。SQLクエリのヘルプ+カウント+ MAX
tblcities (id,name)
tblmembers(id,name,city_id)
ここで、「メンバー」の数が最大である「都市」の詳細を取得します。
よろしく
SELECT tblcities.id, tblcities.name, COUNT(tblmembers.id) AS member_count
FROM tblcities
LEFT JOIN tblmembers ON tblcities.id = tblmembers.city_id
GROUP BY tblcities.id
ORDER BY member_count DESC
LIMIT 1
基本的には:すべての都市を取得し、それぞれが持っているどのように多くのメンバー数える、並べ替え、そのメンバーによって最初に最高のカウントを作り、降順にカウント - そして、それだけで最初の都市を示しています。
それについても考えましたが、おそらく**メンバーが最大の**都市が2つ以上あります... – rsenna
@rsenna - OPは彼らが1つだけを望んでいることを意味します: ''city'の詳細は最大数'members''。 *都市とは対照的に*都市。 OPがそうでないと断言しない限り、関係を無視すべきであると仮定することは論理的です。 – Thomas
@トーマス:私はどのように関係を無視するのですか?無作為に選んで?ネクタイして2番目の場所に行くすべての項目を無視しますか?申し訳ありませんが、唯一可能な論理的な仮定は、結び目*が実際に可能であり、すべての有効な回答が与えられるべきです! Q&Aサイトの目的は、よくある質問に答えさせることです。つまり、この質問*は他の人にも聞かれるかもしれません*。そして、私は彼らのほとんどが関係について興味を持っていると確信しています... – rsenna
Select ...
From tblCities As C
Join (
Select city_id, Count(*) As MemberCount
From tblMembers
Order By Count(*) Desc
Limit 1
) As MostMembers
On MostMembers.city_id = C.id
select top 1 c.id, c.name, count(*)
from tblcities c, tblmembers m
where c.id = m.city_id
group by c.id, c.name
order by count(*) desc
MySQLはTOPコマンドをサポートしていません。 – Thomas
ひどいが、それはそれを行うための方法です:
SELECT * FROM tblcities WHERE id IN (
SELECT city_id
FROM tblMembers
GROUP BY city_id
HAVING COUNT(*) = (
SELECT MAX(TOTAL)
FROM (
SELECT COUNT(*) AS TOTAL
FROM tblMembers
GROUP BY city_id
) AS AUX
)
)
そのようにネクタイがある場合は、まだあなたはメンバーの最大数を持つすべての都市を取得します。 ..
痛いですが、ネクタイをうまく処理します。良いキャッチ。 –
rsenna、あなたのものが働いた。しかし、私はこれとパフォーマンスの問題に直面し、マルクよりも時間がかかりました。そして、複数の最大結果に対してソリューションを提供してくれてありがとう。しかし、現在、私の必要を満たすことができます。 – Rana
メンバー数が最も多い都市(タイ)が複数存在する場合、クエリは何を返すべきですか? – Thomas