Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Loại bỏ các cột trùng lặp trong truy vấn nối bên trái của MySQL

Đ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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhanh hơn để ngẫu nhiên nhiều kết quả trên MySQL Server hoặc trong PHP

  2. Giá trị xuất hiện cao nhất trong mỗi nhóm

  3. Mô hình cài đặt toàn cầu của Laravel

  4. Có thể thực thi kiểm tra dữ liệu trong MySQL bằng biểu thức chính quy không

  5. Cập nhật hàng loạt Sqlalchemy trong MySQL hoạt động rất chậm