Когда вы создаете тег в Firefox, он создает запись в moz_bookmarks, где столбец заголовка будет содержать тег, и fk (внешний ключ, который указывает на moz_places.id. Любые закладки под этим тегом будут иметь указатель moz_bookmarks.parent.к идентификатору тега. Итак, первое, что вам нужно сделать, это найти идентификатор тега.
SELECT moz_bookmarks.id from moz_bookmarks
WHERE moz_bookmarks.title == 'press_germany' AND moz_bookmarks.fk IS NULL
Включая оператор AND, вы убедитесь, что вы нажали на тег. Если этофактическая закладка, fk будет иметь значение. Мы не хотим этого, мы хотим, чтобы fk было NULL.
Теперь, когда у нас есть это, нам нужно использовать это в запросе. Вы можете сделать это следующим образом:
SELECT moz_bookmarks.title
FROM moz_bookmarks, (SELECT moz_bookmarks.id from moz_bookmarks
WHERE moz_bookmarks.title == 'press_germany' AND moz_bookmarks.fk IS NULL) tag
WHERE moz_bookmarks.parent == tag.id
Обратите внимание, что в приведенном выше запросе мы используем результаты первого запроса в выражении FROM (во многом как вы, но комментируем тех, кто может быть не знаком с этим), и присваиваемэто приводит к псевдониму 'tag' (вы можете выбрать любой псевдоним, какой захотите, как вы, вероятно, знаете, только не используйте зарезервированное слово или создайте столкновение с именем поля).
Ваш последний stЯ подозреваю, что atement будет выглядеть примерно так (если нет, я уверен, что вы сможете настроить его оттуда):
SELECT moz_places.id, moz_bookmarks.title, moz_places.url
FROM moz_bookmarks, (SELECT moz_bookmarks.id from moz_bookmarks
WHERE moz_bookmarks.title == 'press_germany' AND moz_bookmarks.fk IS NULL) tag
LEFT OUTER JOIN moz_places
ON moz_places.id == moz_bookmarks.fk
WHERE moz_bookmarks.parent == tag.id
Вышеприведенный список не будет делать рекурсивный список.Другими словами, если у вас есть подпапки в папке, в вашем запросе будут перечислены имена подпапок, но не их содержимое, включая подпапки.
Если вы хотите вытащить все закладкирекурсивно, вот запрос, который я смог придумать, взяв чужой запрос и настроив его.Кроме того, я не разбираюсь в рекурсивных запросах.
WITH RECURSIVE
under_root(id, level) AS (
VALUES (0,0)
UNION ALL
SELECT moz_bookmarks.id, under_root.level+1
FROM moz_bookmarks JOIN under_root ON moz_bookmarks.parent=under_root.id
ORDER BY 2 DESC
)
SELECT substr('.....................................................................................................',1,level*5) || moz_bookmarks.title AS "TITLE", CASE WHEN moz_places.url is null THEN "" ELSE moz_places.url END AS "URL", datetime(moz_bookmarks.dateAdded/1000000,"UNIXEPOCH","LOCALTIME") AS "Date Added", datetime(lastModified/1000000,"UNIXEPOCH","LOCALTIME") AS "Last Modified", CASE WHEN datetime(moz_places.last_visit_date/1000000,"UNIXEPOCH","LOCALTIME") IS null THEN "" ELSE datetime(moz_places.last_visit_date/1000000,'UNIXEPOCH','LOCALTIME') END AS "Last Visit Date", CASE WHEN moz_places.visit_count IS null OR moz_places.visit_count=0 THEN "" ELSE moz_places.visit_count END FROM moz_bookmarks JOIN under_root ON moz_bookmarks.id=under_root.id LEFT JOIN moz_places on moz_places.id=moz_bookmarks.fk;