2016-12-07 14 views
-3
describe user; 

id  int(1)  NO 'PRI' 0    
name  'varchar'(20) YES  NULL   
address 'varchar'(20) YES  NULL   
class int(2)  YES  NULL   
DOB  date   YES  NULL   
created date   YES  NULL 


describe 'marklist' 
+-------------+-------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+-------------+-------------+------+-----+---------+-------+ 
| id   | int(1)  | NO |  | 0  |  | 
| subject  | varchar(10) | YES |  | NULL |  | 
| 'markscored'| int(2)  | YES |  | NULL |  | 
| 'outof'  | int(2)  | YES |  | NULL |  | 
| 'userid' | int(2)  | YES |'NUL'| NULL |  | 
+-------------+-------------+------+-----+---------+-------+ 

これらは、与えられた二つのテーブルであり、これら2から、私はあることを置くアウトを要求を生成するために2つのテーブルを結合:親切に私は上記の出力を取得するクエリを与えるとして与えられた出力

|name |class|biology|chemistry|physics|outoftotal|totalmarkscored|percentage| 
+-----+-----+-------+---------+-------+----------+---------------+----------+ 
|arun | 5 | 45 | 42  | 40 | 150  | 127   |84.6  | 

2つのテーブルuserとmarklist '

+4

コードを書式設定してください。 4行以上のスペースで各行をインデントします。 –

+0

以下のクエリを使用して、私は私の必要な出力を得ます。 – Gowrisankar

+0

SELECT u.name、u.class、 SUM(対象がLIKE '生物学'と表示されていますELSE 0 END)AS生物学 SUM(対象LIKE 'chemistry' THEN物理AS被写体LIKE '物理' はTHEN ELSE 0 END markscored化学AS 0 END)、 SUM(CASE)、 SUM(outof markscored)TOTAL AS、 SUM()U FROM AS oUTOF 、marklist mの ELSE markscored WHERE u.id = m.userid GROUP BY u.name、u.class; – Gowrisankar

答えて

0

btwを使用すると、int(2)に' 150 'があるのは変です。

'ユーザーが' また、SQLの予約語であるので、それが修正クエリを実行した後、あなたにMVCNoobに感謝

SELECT u.name,u.class, 
(SELECT SUM(subject) FROM marklist WHERE subject LIKE 'biology') AS biology, 
(SELECT SUM(subject) FROM marklist WHERE subject LIKE 'chemistry') AS chemistry,m.outof AS outoftotal,m.markscored AS  
totalmarkscored,m.markscored/m.outof*100 
FROM user u, marklist m 
WHERE u.id=m.id 
+0

'(2)'は単なる表示幅であり、 'int'データ型リファレンスの全範囲を格納できます。[Numeric Type Attributes](http://dev.mysql.com/doc/refman/5.5/en/numeric -type-attributes.html) – bansi

+0

うわー、私はそれについて知りませんでした。@バンジーを知っていてうれしいですが、まだそれはint(3)ではないでしょうか? – MVCNoob

+0

sir、私はフィールドリストとして出力をしたい:-name、クラス、markscored、totalmarkscored、合計outof、行の件名を削除し、生物学、化学、物理学などのような行を追加する、親切にも私に生物学、化学を挿入するクエリを与える、行としての物理 – Gowrisankar

0

をPLSの使用いけない: u.class、u.nameをu.id SELECT、 (SELECT SUM(markscored)FROMマークリストWHERE subject LIKE 'biology'とu.id = m.id)AS生物学 (SELECT SUM(markscored)FROMマークリストWHERE subject LIKE 'chemistry' AND u.id = m.id )AS化学、 (SELECT SUM(markscored)FROMマークリストWHERE subject LIKE '物理学'とu.id = m.id)AS物理学、 (SELECT SUM(markscored)FROM marklist WHERE u.id = m.id)AS合計、 (SELECT SUM(outof)FROMマークリストWHERE u.id = m.id)AS outof、 ((SELECT SUM(markscored)FROM marklist WHERE u.id = m.id)/(SELECT SUM(outof)FROM marklist WHERE u.id = m.id)* 100)としてp FROM u、マークリストm どこにu.id = m.userid = 1; 、出力は次のようになります: + ------ + ------ + ------- + --------- + --------- + + --------- + ------- + ------- + --------- + | id |名前|クラス|生物学|化学|物理学|合計|外出| p | + ------ + ------ + ------- + --------- + ----------- + ---- ----- + ------- + ------- + --------- + | 1 |アルン| 6 | 37 | 48 | 48 | 133 | 150 | 88.6667 | | 1 |アルン| 6 | NULL | NULL | NULL | NULL | NULL | NULL | | 1 |アルン| 6 | NULL | NULL | NULL | NULL | NULL | NULL | + ------ + ------ + ------- + --------- + ----------- + ---- ----- + ------- + ------- + --------- + 3行セット(0.00秒)、ここではアーンはplsを繰り返しています。リピートを避けるためのクエリ ありがとうございました

関連する問題