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

Próba zwrócenia wszystkich kolumn rekordów podrzędnych dla rekordu nadrzędnego

Możesz użyć CSV id wynik taki jak:

SELECT *
FROM tblreport
WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
                     SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',') 
                     FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
                     JOIN (SELECT @pv:=1)tmp
                       WHERE ParentID IN (@pv)) a));

Demo DBFiddle

Wyjście:

ID  Name    ParentID
2   2nd     1
3   3rd     1
4   4th     2

EDYTUJ:

Jeśli potrzebujesz również oryginalnego wiersza, możesz użyć UNION ALL :

SET @var = 1;

SELECT *
FROM tblreport
WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
                     SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',') 
                     FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
                     JOIN (SELECT @pv:[email protected])tmp
                       WHERE ParentID IN (@pv)) a))

UNION ALL
SELECT *
FROM tblReport
WHERE ID = @var
ORDER BY ID;

DBFiddle Demo2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać miesiąc używając daty w MySQL?

  2. Jak usunąć pierwsze 3 znaki w mysql?

  3. Problem z wydajnością/strukturą bazy danych

  4. Wybierz dane między dwiema datami z wyłączeniem niektórych dni

  5. Mysql codeigniter php asc desc kolejność według wyniku zliczenia za pomocą php