Выборка категорий и подкатегорий

Тема в разделе "Базы данных", создана пользователем zek24, 21 июл 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    777
    Симпатии:
    231
    Нужна помощь с селектом.
    Есть категория id = 14
    у нее есть подкатегории, у которых, в свою очередь, также есть подкатегории.
    Нужно выбрать их все.
    acat_id = категория
    acat_struct = родительская категория
    Мой код выдает ошибку
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 21
    Код:
    $sql = '
    SELECT *
    FROM `phpwcms_articlecat`
    WHERE
    acat_struct =214
    OR
    acat_struct
    IN (
    SELECT acat_id
    FROM `phpwcms_articlecat`
    WHERE acat_struct =214
    ) OR
     
    acat_struct IN
     
    (SELECT acat_id
    FROM `phpwcms_articlecat`
    WHERE
    acat_struct IN (
    SELECT acat_id
    FROM `phpwcms_articlecat`
    WHERE acat_struct =214)
    ';
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    В конце закрывающую скобку ) пропустил :)

    PS проверь производительность такого решения ... Большенство реализаций которые я видел либо дёргают все категории и сортируют на уровне php либо делают несколько запросов к базе.
     
    zek24 нравится это.
  3. lesorub

    lesorub Жаббервог

    Регистр.:
    22 дек 2008
    Сообщения:
    325
    Симпатии:
    280
    последние 2 условия разве не выдают пустые множества? Мне кажется здесь (при условии добавления скобки для исправления ошибки) отрабатывает только:
    Код:
    SELECT *
    FROM `phpwcms_articlecat`
    WHERE
    acat_struct =214
     
  4. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    777
    Симпатии:
    231
    проблемка действительно была в скобке))
    последние 2 условия поочередно "закапываются" глубже в подкатегории.
     
Статус темы:
Закрыта.