2017-11-30 2 views
-3

Ich habe Ergebnistabelle all Sub_ID Inline-Reihe Sub_ID (17,18,19) in einer Reihe bekommen mußSelect Tabelle 3 Zeilen in einer Zeile

In einer Abfrage wie diese:

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

Ergebnis Tabelle

+----+-------+--------+--------+-------+-------+-------+ 
| 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 | 
+----+-------+--------+--------+-------+-------+-------+ 

Tabelle anzeigen in Seite

brauchen alle Sub_ID inline bekommen Wo ExamID = 1

Wie kann ich eine SQL-Anweisung zu schreiben, ein ein Ergebnis wie dieses erhalten ?:

+----+-------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ 
| 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 | 
+----+-------+--------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ 

benötigen MySQL-Abfrage, die Tabelle

+1

Was haben Sie versucht? Welche Hilfe brauchst du? SQL-Anweisung? PHP-Funktion? Bitte lesen [this] (https://stackoverflow.com/help/how-to-ask) und [this] (http://www.catb.org/~esr/faqs/smart-questions.html) – aaa

+0

Sie müssen uns einige Details darüber geben, was Sie zu erreichen versuchen. Bitte lesen Sie https://stackoverflow.com/help/how-to-ask –

+0

Fragen Sie nach einer SQL-Abfrage? – Luke101

Antwort

1
zu erhalten

Hallo, Sie können die folgende Abfrage verwenden, um das von Ihnen angeforderte Ergebnis zu erhalten.

Lösung 1

HINWEIS: Sie werden nicht die Werte in Spalte weise erhalten, aber mit dem Komma alle Spalte in einem getrennt.

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

Beispielausgabe:

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 

Wenn Sie jede einzelne Zeile wollen nach der 7. Spalte zu explodieren (Ihre Spalten unter Berücksichtigung) dann mit dem folgenden Ausschnitt innerhalb foreach oder für Schleife

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

HINWEIS: Entfernen Sie die Spalten, die Sie nicht in der GROUP_CONCAT() von select benötigen.

Lösung 2

Wenn Sie dann wäre die einzige Lösung, das Ergebnis nicht in der obigen Art und Weise wollen alle Ergebnisse aus der Datenbanktabelle und Schleife in sie zu holen und die Sache zu erreichen, was Sie wollten .

Aktualisiert:

Zuerst für alle Datensätze abgefragt werden müssen, und führen Sie dann die Aktion, die Sie wollen. Lass mich den kleinen Ausschnitt geben. Aber wieder hängt davon ab, wie Sie erreichen wollen.

$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

können Sie mir mehr die zweite Lösung zu erklären? –

+0

@AhmedMamdouh Hallo Ich habe meinen Code aktualisiert. Bitte überprüfen Sie es –

+0

Okay, danke. –

Verwandte Themen