Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql обединява множество таблици с различен брой редове

Като се имат предвид вашите данни, тази заявка трябва да връща това, което искате:

SELECT t1.*,
       GROUP_CONCAT(t2.info SEPARATOR '|') AS info,
       GROUP_CONCAT(t2.data SEPARATOR '|') AS data
FROM table1 t1 LEFT JOIN
     join j
     ON j.id_a = t1.id_a LEFT JOIN
     table2 t2
     ON t2.id_b = j.id_b
WHERE t1.id_a = ?
GROUP BY t1.id_a;

Ако желаете, можете да премахнете дубликатите с помощта на DISTINCT :

SELECT t1.*,
       GROUP_CONCAT(DISTINCT t2.info SEPARATOR '|') AS info,
       GROUP_CONCAT(DISTINCT t2.data SEPARATOR '|') AS data
FROM table1 t1 LEFT JOIN
     join j
     ON j.id_a = t1.id_a LEFT JOIN
     table2 t2
     ON t2.id_b = j.id_b
WHERE t1.id_a = ?
GROUP BY t1.id_a;

Обикновено обаче е по-добре да коригирате заявката, така че да не генерира дубликати.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Схема за експортиране на MySql без данни

  2. Има ли разлика между DATE_SUB() и използването на аритметични оператори за изчисляване на дата и час?

  3. групирайте редове в колони със сума

  4. Прост пример за релация много към много с помощта на Sequelize

  5. Връща отговор от PHP към Jquery с помощта на Ajax