2017-11-30 27 views
-3

私は結果表を持っているが、このようなクエリでは1行選択テーブル3行

内のすべてのsub_idはインライン行sub_idは(17,18,19)を取得する必要が:

SELECT * 
FROM `results` 
WHERE `ExamID` = 1 

ページ内の結果表

+----+-------+--------+--------+-------+-------+-------+ 
| ID | StuID | Sub_ID | ExamID | Exam1 | Exam2 | Exam3 | 
+----+-------+--------+--------+-------+-------+-------+ 
| 1 | 70 |  17 |  1 |  0 |  0 |  0 | 
| 2 | 70 |  18 |  1 |  0 |  0 |  0 | 
| 3 | 70 |  19 |  1 |  0 |  0 |  0 | 
| 4 | 70 |  24 |  4 |  0 |  0 |  0 | 
| 5 | 70 |  25 |  4 |  0 |  0 |  0 | 
+----+-------+--------+--------+-------+-------+-------+ 

を表示する表

はExamID = 1

は、私はこの1つのような結果を得るために、私のSQL文を書くにはどうすればよいのすべてsub_idはインラインを取得する必要があります?:

+----+-------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ 
| ID | StuID | Sub_ID | ExamID | Exam1 | Exam2 | Exam3 | StuID | Exam1 | Exam2 | Exam3 | StuID | Exam1 | Exam2 | Exam3 | 
+----+-------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ 
| 1 | 70 |  17 |  1 |  0 |  0 |  0 | 18 |  0 |  0 |  0 | 19 |  0 |  0 |  0 | 
+----+-------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ 

は、そのテーブル

+1

何を試しましたか?どんな助けが必要ですか? SQLステートメント? PHP関数? [this](https://stackoverflow.com/help/how-to-ask)と[this](http://www.catb.org/~esr/faqs/smart-questions.html) – aaa

+0

を読んでくださいあなたが達成しようとしていることについていくつかの詳細を教えてください。 https://stackoverflow.com/help/how-to-ask –

+0

を参照してください.SQLクエリをリクエストしていますか? – Luke101

答えて

1
を取得するために、MySQLのクエリを必要とします

こんにちは、次のクエリを使用して、要求した結果に類似することができます。

ソリューション1

注:あなたは文句を言わない賢明な列の値を取得しますが、コンマで1列にすべてを分離しました。

SELECT GROUP_CONCAT(id,',',StuID,',', Sub_ID,',',ExamID,',',Exam1,',',Exam2,',',Exam3) 
FROM `results` 
GROUP BY ExamID 

サンプル出力:

GROUP_CONCAT(id,',',StuID,',', Sub_ID,',',ExamID,',',Exam1,',',Exam2,',',Exam3) 
1,70,17,1,0,0,0,2,70,18,1,0,0,0,3,70,19,1,0,0,0 
4,70,20,4,0,0,0,5,70,21,4,0,0,0 

あなたは(あなたの列を考慮して)7番目の列の後に爆発する一人ひとりの行をしたい場合は、その後のためにのforeachまたはの内側に次のコードを使用しますループ

array_chunk(explode(';', $input), 7); 

注:必要のない列をselectのGROUP_CONCAT()で削除します。

ソリューション2

あなたは上記の方法で結果をしたくない場合は、唯一の解決策は、それらの中に、データベースのテーブルとループからすべての結果をフェッチし、あなたが何を望むかの事を達成するだろう。

を更新:

あなたはすべてのレコードを照会して、あなたがしたいアクションを実行する必要がありまず。小さなスニペットを教えてください。しかし、再びあなたが達成したい方法に依存します。

$resultsQuery = mysqli_query($con, "SELECT * FROM results"); 
$finalResults = array(); 
if(mysqli_num_rows($resultsQuery) > 0){ 
    while($row = mysqli_fetch_assoc($resultsQuery)){ 
     /* 
      Here you can write your script 

        OR 

      Store the $row in an array and do as per your needs 
     */ 
    } 
} 
+0

より多くの2番目のソリューションを説明できますか? –

+0

@AhmedMamdouhこんにちは私は自分のコードを更新しました。それを確認してください –

+0

さて、ありがとうございます。 –

関連する問題