Цикл в запросе или как то еще?!

SharuPoNemnogu

Есть запрос:
SELECT * FROM j_content WHERE catid = "9" OR catid = (SELECT id FROM j_categories WHERE parent_id = "9") AND state = "1"
Проблема в том, что
SELECT id FROM j_categories WHERE parent_id = "9"
дергает много значений и их все надо сравнить с catid. Можно как то сделать цикл или по другому оформить запрос?Спасибо!
7 ответов

SharuPoNemnogu

Извиняюсь тупанул, заработался.. :)Все сравнивать и не надо было.
SELECT * FROM j_content WHERE j_content.catid = "9" OR j_content.catid = (SELECT j_categories.id FROM j_categories WHERE j_categories.parent_id = "9" AND j_content.catid = j_categories.id) AND j_content.state = "1"
Но вопрос все равно интересный. Можно ли организовать цикл в одном запросе?


SharuPoNemnogu

...Можно ли организовать цикл в одном запросе?
пхп-ешник ?


SharuPoNemnogu

пхп-ешник ?
В основном


SharuPoNemnogu

В основном
...заметно (скл-запрос - работает с множеством, ему не нужен циклвот как раз, когда появляется желание сделать в БД чёта циклом - это, скорее всего, значит что делаеш что-то не правильно ...твой запрос "по-людски"
SELECT j_content.* 
FROM j_content 
inner join j_categories
 on j_content.catid = j_categories.id
where "9" in (j_categories.id,j_categories.parent_id)
 AND j_content.state = "1"


SharuPoNemnogu

qwerty112,Спасибо за разъяснение!


SharuPoNemnogu

Еще вопрос в другую степь немного. Когда что используется? что быстрее и в чем разница (желательно с примером:))JOIN, LEFT JOIN, RIGHT JOIN


SharuPoNemnogu

многим не нравится выражение "погугли", но все таки это хороший советответ лежит на поверхности