Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyeliminuj zduplikowane kolumny w zapytaniu z lewym złączem MySQL

Można to rozwiązać na dwa sposoby:

Używanie tylko 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;

Wynik:

Q1  Q1_text C1
C2
C3
Q2  Q2_text C4
C5
C6

Używam również PHP:

Przy pierwszym wyświetleniu można to łatwo wykonać za pomocą PHP i uporządkować wyniki według 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;

Podczas wyświetlania wyniku:

$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;
        }       
    }

Powyższy kod PHP wypisze wartości 2 kolumn tylko wtedy, gdy name_question nie został już wydrukowany.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy w MySQL istnieje sposób na odwrócenie pola logicznego za pomocą jednego zapytania?

  2. Dlaczego nie otrzymuję błędu podczas ustawiania większej długości typu danych typu INT w MySQL?

  3. mój skrypt nodejs nie kończy pracy sam po pomyślnym wykonaniu

  4. Podczas importowania pliku mysqldump BŁĄD 1064 (42000) w pobliżu „■/” w wierszu 1

  5. Zapętlaj wyniki na podstawie kategorii, ale wyświetlaj kategorię tylko raz