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

изберете заявка за данни за категория с родителска дъщерна връзка

Опитайте самостоятелно да се присъедините :

РЕДАКТИРАНЕ: Забравих да сложа клаузата WHERE

SELECT
    a.name,
    b.name,
    c.name
FROM 
    category as a
LEFT JOIN category as b
    ON b.parent_id = a.id
INNER JOIN category as c
    ON c.parent_id = b.id
    AND c.inherit = 'Y'
WHERE
    a.id = 1

Но идеалното решение е да имате рекурсивна функция, която ще направи това, тъй като в тази таблица описвате дърво от категории. Заявката по-горе е статична, връща се 2 нива назад (2 подкатегории) и доколкото разбирам, имате нужда от нещо динамично.

Нещо като функцията по-долу:

public String getCategory(int categId){

    String sSql = "SELECT name FROM category WHERE id = " + categId ;
    String name = oDb.exec(sql).get("name");

    sSql = "SELECT id FROM category WHERE inherit = 'Y' AND parent_id = " + categId ;
    int nextCategId = oDb.exec(sql).get("id");

    if(nextCategId != null){
        return name + "," + getCategory(nextCategId);
    }else{
        return name;
    }

}

Така че, ако приемем, че Apples categ е наследен резултатът за getCategory(1) трябва да бъде Fruits,Apples,Green Apples



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. грешка:Скриптът за настройка е излязъл с грешка:командата 'gcc' неуспешна със състояние на изход 1

  2. Защо MySQL InnoDB вмъкванията/актуализациите на големи таблици стават много бавни, когато има няколко индекса?

  3. Codeigniter:Бих искал да създам потребителски URL адреси за моите потребители, когато създават потребителско име

  4. какво е java.io.EOFException, Съобщение:Не може да се прочете отговор от сървъра. Очаква се да прочетете 4 байта, да прочетете 0 байта

  5. ИЗБЕРЕТЕ само редове, които съдържат само буквено-цифрови знаци в MySQL