ホームページ >バックエンド開発 >PHPチュートリアル >または、mysqlクエリの概要の概要について質問したいです。

または、mysqlクエリの概要の概要について質問したいです。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 14:39:481116ブラウズ

この投稿は setoy によって最終編集されました: 2013-12-18 18:11:02

5 人のユーザーがいて、uid は 1 から 5 までです
これら 5 人のスコア表があります (ポイントを受け取っていない人もいる可能性があります) )
id  uid  scroe-------------1    1    1.52    1    1.83    2    -5.54    1    0.85    2    8.26    1    -27    4    38    2    2.3--------------


今度は全員のスコアをカウントする必要があります。特定の人のスコアを照会できない場合でも、表示形式は次のようになります。
用户  分数   汇总分-----------------------1      1.5     2.11      1.8     2.11      0.8     2.11      -2      2.12      -5.5    52      8.2     52      2.3     53      0       04      3       35      0       0

に返信します。ディスカッション(解決策)

投稿者が何を望んでいるのか分かりません 何を質問していますか

2 番目のテーブルの取得方法と mysql ステートメントの書き方?

テーブルを作成します:

CREATE TABLE a	(`id` int, `uid` int, `scroe` float);	INSERT INTO a	(`id`, `uid`, `scroe`)VALUES	(1, 1, 1.5),	(2, 1, 1.8),	(3, 2, -5.5),	(4, 1, 0.8),	(5, 2, 8.2),	(6, 1, -2),	(7, 4, 3),	(8, 2, 2.3);

問題は、データセットに uid=3 と uid=5 のレコードがないことです。参照

select t.*,round(s.scroe,1) as scroe , round(if(s.total is null,0,s.total),1) as summary from (select 1 as uid union select 2 as uidunionselect 3 as uid union select 4 as uidunion select 5 as uid) t left join (select uid,scroe,(select sum(scroe) from a where uid=aa.uid group by uid) as total from a as aa) son s.uid = t.uid

問題は、データセットに uid=3 と uid=5 のレコードがないことです。


uid はユーザー テーブルで管理されるフィールドで、ユーザー テーブルのレコードに基づいて読み取られます:
ここ: http://bbs.csdn.net/topics/390673185

ユーザー テーブル tu

スコア テーブル t

SQL: SELECT tu.uid,t.score,a.total from test t right join test_user tu on tu.uid=t.uid left join (SELECT uid,sum(score) as total from test group by uid) a a.uid=t.uid tu.uid による注文

結果

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。