Помогите с формулой SQLite

программирование php sql SQLite

Есть ли возможность как то перестроить формулу так, что бы она работала?

SELECT id FROM pages WHERE fullpath LIKE (SELECT fullpath FROM pages WHERE id IN (4,9)) || '%'

или подобное только скриптом в цикле запускать получится при id = $id?

Примечание:
сейчас я в цикле по массиву выполняю несколько раз это
SELECT id FROM pages WHERE fullpath LIKE (SELECT fullpath FROM pages WHERE id = {$id}) || '%'

а хочется одним запросом обойтись, без цикла

Примечание:
PetSerAl, круто, а если такая формула, то как?

"UPDATE pages SET status = $val
WHERE fullpath LIKE (SELECT fullpath FROM pages WHERE id = $id) || '%' AND status > $val
OR id IN (SELECT id FROM pages WHERE (SELECT fullpath FROM pages WHERE id = $id) LIKE fullpath || '/%' AND status < $val)
OR id = $id"

А то я не понял слегка что именно твоя формула делает :)

Примечание:
PetSerAl, эта формула работает очень похоже, но в некоторых моментах не хочет выбирать.
Ответы:
у вас в подзапросе идет возврат списка. Для LIKE так не пишут
select distinct t2.id
from
   pages as t1 join
   pages as t2 on t2.fullpath like t1.fullpath||'%'
where t1.id in (4,9)
update pages set status=$val where exists(
   select * from pages as t1
   where
       t1.id in (4,9) and
       (pages.fullpath like t1.fullpath||'%' and pages.status>$val or
       t1.fullpath like pages.fullpath||'/%' and pages.status<$val)
)


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.