machen Ich habe 3 Tabellen tbl_contestant, tbl_criteria und tbl_judges. Und dann habe ich 1 weitere Tabelle kombiniert diese 3 Tabelle als mein Ergebnis, tbl_score.MYSQL/Abfrage: Wie Sie Tabellenzeilen in Spalte
tbl_criteria
------------------------
crit_id | criteria_name
16 | sports
tbl_judges
------------------------
judge_id | judge_name
61 | first
62 | second
63 | third
tbl_cotestant
--------------------------------------
con_id | contestant_number | contestant_name |
1 | 1 | john |
2 | 2 | sy |
3 | 3 | Nah |
tbl_score
--------------------------------------------------
score_id | crit_id | judge_id | contestant_number | score
1 | 16 | 61 | 1 | 25
2 | 16 | 61 | 2 | 25
3 | 16 | 61 | 3 | 25
4 | 16 | 62 | 1 | 25
5 | 16 | 62 | 2 | 73
6 | 16 | 62 | 3 | 59
7 | 16 | 63 | 1 | 70
8 | 16 | 63 | 2 | 80
9 | 16 | 63 | 3 | 70
Wie kann ich diese Ausgabe erreichen, judge_id Reihe verwandelt sich in Spalte basierend auf crit_id
contestant_number | contestant_name | 16_judge_61 | 16_judge_62 | 16_judge_63 | total
1 | john | 25 | 25 | 70 |
2 | sy | 25 | 73 | 80 |
3 | Nah | 25 | 59 | 70 |
Bitte korrigieren Sie meine Anfrage
SELECT DISTINCT(c.contestant_number) , contestant_name , j1.sports as
16_judge_61, j2.sports as 16_judge_62, j3.sports as 16_judge_63 from
tbl_criteria , tbl_score, tbl_contestant c
LEFT JOIN tbl_ // <-- i have no idea how start from here joining those 4 tables together
Sie sind sicher, dass Sie die Ausgabe auf MySQL wollen, im Gegensatz der Präsentationsschicht zu sortieren? – Strawberry
Dies ist mit einer 'einfachen' SQL-Abfrage nicht möglich. Im Wesentlichen benötigen Sie ein Mittel zum "Pivotieren" von Zeilen in Spalten. Siehe: http://stackoverflow.com/questions/1241178/mysql-rows-to-columns Wenn Sie unter http://sqlfiddle.com/ eine SQL-Geige mit Testdaten erstellt und freigegeben haben, erhalten Sie möglicherweise weitere Hilfe. –
@AlanHay Danke, ich denke, meine vorherige Frage ist falsch, da tbl_score bereits erstellt wurde, kann ich die Antwort erhalten, indem ich die richter_id Zeile mache, die in Spalte –