Điều này có thể được giải quyết bằng hai cách:
Chỉ sử dụng SQL:
SQL Fiddle: http://www.sqlfiddle.com/#!2 / 19d46 / 14
SELECT case
when c.text_choice = (select min(text_choice) from choice c2 where c2.id = q.id) then name_question
else ""
end as name_question,
case
when c.text_choice = (select min(text_choice) from choice c2 where c2.id = q.id) then text_question
else ""
end as text_question,
c.text_choice
FROM question as q LEFT JOIN choice as c
ON q.id = c.id
order by q.id, c.text_choice;
Kết quả:
Q1 Q1_text C1
C2
C3
Q2 Q2_text C4
C5
C6
Sử dụng cả PHP:
Khi xem lần đầu, bạn có thể dễ dàng thực hiện điều này thông qua PHP và sắp xếp kết quả của bạn theo name_question.
$query = ' SELECT q.name_question, q.text_question, c.text_choice'.
' FROM question as q '.
' LEFT JOIN choice as c ' .
' ON q.id_question = c.id_question ' order by q.name_question;
Khi hiển thị kết quả:
$current_nameQuestion = "";
foreach ($db->loadObjectList() as $obj){
if($current_nameQuestion==$obj->name_question)
{
echo " ".$obj->text_choice."</br>";
}
else
{
echo $obj->name_question." ".$obj->text_question." ".$obj->text_choice."</br>";
$current_nameQuestion = $obj->name_question;
}
}
Đoạn mã PHP ở trên, sẽ chỉ in ra 2 giá trị cột khi name_question
vẫn chưa được xuất.