0

データベース テーブルに対して次の結果が得られました。

ここに画像の説明を入力

クエリ:

SELECT 
service_titles.user_id, service_titles.slide_id, service_titles.name as title_name ,service_names.name as service_name 
FROM service_names 
INNER JOIN service_titles ON service_names.title_id = service_titles.id

したがって、何が起こる必要があるかは次のとおりです。

  • ユーザーが 2 つの固有のサービス タイトルを持っている場合、そのタイトルの service_names の最大数は6になります。
  • ユーザーが 1 つのサービス タイトルを持っている場合、そのタイトルの service_names の最大数は16になります。

私はすべてのコーディングに PHP を使用しますが、これをどのように行うのか疑問に思っています。そのユーザーとスライドに一意の service_titles がいくつあるかを数え、次に各タイトルにあるサービス アイテムの数を数える方法が必要です。

助けてくれてありがとう!

4

3 に答える 3

1
SELECT COUNT(DISTINCT service_titles.name)
FROM service_names
INNER JOIN service_titles ON service_names.title_id = service_titles.id
GROUP BY service_titles.user_id, service_titles.slide_id

これにより、各 user_id/slide_id コンボの個別の title_names の数が得られます。

SELECT COUNT(DISTINCT service_names.name)
FROM service_names
INNER JOIN service_titles ON service_names.title_id = service_titles.id
GROUP BY service_titles.user_id, service_titles.slide_id

...そして、それは同じの個別のservice_namesの数です。1 つのクエリで両方が必要な場合は、関係なくCOUNT同じものを使用しているため、両方を組み合わせることができますGROUP BY

于 2012-02-13T15:02:38.693 に答える
0

クエリ内で CASE ステートメントを使用して、service_names の最大数を変更できます。

MySQL CASE ステートメントのリファレンスを参照してください

これを SQL 自体で行う方が、PHP で評価するよりも高速です。

于 2012-02-13T15:01:13.987 に答える
0

試せるタイトルの数を数えるには:

SELECT user_id, COUNT(DISTINCT name)
FROM service_titles
GROUP BY user_id
于 2012-02-13T15:02:16.093 に答える