I dont really know how to put this but please kindly check the details below.
Student
|Student_ID|Student_Name|
|1 |Ryan |
|2 |Camille |
|3 |George |
Grade
|Student_ID|Subject |Grade
|1 |Math |5
|1 |English |3
|1 |History |1
|2 |Math |3
|2 |English |4
|2 |History |1
|3 |Math |5
|3 |English |1
|3 |History |2
Is it possible to get this result?
Student_Name|Math|English|History
Ryan |5 |3 |1
Camille |3 |4 |1
George |5 |1 |2
Now I've been doing this the hardway by populating an unbound datagrid with first the column name, then the student name then adding the the details for each student name. This is time consuming and I want to optimize the query better.
Thanks in advance.
While @John's answer will work if you have a known number of subjects, if you have an unknown number of subjects then you can use prepared statements to generate this dynamically. Here is a good article:
Dynamic pivot tables (transform rows to columns)
Your code would look like this:
See SQL Fiddle With Demo
Try,
SQLFiddle Demo