Что не так с этим запросом (Выберите как RES1 Союз Выберите, где параметр IN (RES1) - PullRequest
0 голосов
/ 08 июня 2009

Запрос:

ВЫБЕРИТЕ ct_cid как уровень1 ОТ дерева катов, ГДЕ ct_sid = $ sid_int И ct_parent = $ cid_int) UNION (ВЫБЕРИТЕ ct_cid как level2 ОТ cat_tree WHERE ct_sid = $ sid_int И ct_parent IN level1)

Предполагается, что запрос найдет дочерние узлы до 2 уровней узла дерева. Я получаю сообщение «У вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса, близкого к« level1 », в руководстве, соответствующем версии вашего сервера MySQL». Как я могу использовать результаты первого выбора во втором выборе?

Ответы [ 3 ]

1 голос
/ 08 июня 2009

вам не нужно ставить скобки вокруг второго оператора SELECT ... Кроме того, имена и порядок полей должны совпадать в обоих операторах SQL-Select. То, что вы можете хотеть, это что-то вроде

select 1 as LevelID, CT_CID from cat_tree where...  
UNION
select 2 as levelID, CT_CID from cat_tree where ...

Теперь ваша вторая половина вопроса ... используя результаты первого ... Повторите запрос в качестве дополнительного выбора в ВТОРОМ запросе ...

select 1 as LevelID, CT_CID 
    from cat_tree
    where ct_sid = $sid_int
      and ct_parent = $cid_int
union
select 2 as LevelID, CT_CID
    from cat_tree
    where ct_sid = $sid_int
      and ct_parent IN
              ( select ct_cid  
                     from cat_tree
                     where ct_sid = $sid_int
                       and ct_parent in $cid_int ) 

Обратите внимание, что паренны нужны только в SUB-SELECT, а не в UNION. Не зная ваших данных, может быть более простой подход к тому, что вы пытаетесь получить

0 голосов
/ 08 июня 2009

Это не проверено, но структура, которую вы ищете, может быть:

SELECT ct_cid as level2 FROM cat_tree WHERE ct_sid=$sid_int AND ct_parent IN 
(
   SELECT ct_cid as level1 FROM cat_tree WHERE ct_sid=$sid_int AND ct_parent =$cid_int) 
)
0 голосов
/ 08 июня 2009

Это не так, как работает SQL. Для IN требуется список значений (или подвыбор, который создает список).

Пожалуйста, опубликуйте структуру таблиц, к которым вы обращаетесь, вместе с пояснениями, что означают поля. Тогда, может быть, мы можем помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...