sql >> Databasteknik >  >> RDS >> Mysql

MySql slå samman flera tabeller med olika radnummer

Med tanke på dina uppgifter bör den här frågan returnera det du vill ha:

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;

Om du vill kan du ta bort dubbletterna med 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;

Vanligtvis är det dock bättre att fixa frågan så att den inte genererar dubbletter.




  1. Kan jag använda en PDO-förberedd sats för att binda en identifierare (ett tabell- eller fältnamn) eller ett syntaxnyckelord?

  2. 2PL, rigorös vs strikt modell, finns det någon fördel?

  3. Hur skapar man Codeigniter-språkfiler från databasen?

  4. Oracle SQL - ansluter till syntax/sökord