SQlite json1 поиск тегов в массиве JSON
Я пытаюсь сделать простой запрос в SQLite, но у меня есть некоторые проблемы, вот пример запроса:
SELECT
files.id as id, files.hash as hash, files.name as name,
files.description as description, files.date as date,
files.tags as tags, files.languages as languages
FROM
files, json_each(files.tags) as Ts
, json_each(files.languages) as Ls
WHERE Ts.value = '333'
GROUP BY files.id
files.tags
а также files.languages
оба поля JSON с массивом JSON внутри, как ["aaa","bbb","ccc"]
Этот запрос работает, но у меня есть 2 проблемы:
Мне нужно сделать
group by
потому что строки дублируются, когда я устанавливаюjson_each()
каждая строка дублируется вjson_each()
(один для тегов и другой для языков), поэтому я думаю, что я что-то не так делаю.Если в строке нет тегов (или языков) и в поиске я не установил
WHERE
, результат не показывает строки без тегов / языков, в том числе, если я установил в столбце строки тегов"[]"
чтобы установить пустой, мне нужно, если у меня нет, где появляются строки без тегов или языков
╔════╦══════════════╦══════════╦════════════════╦═════════╦═══════════════╦══════════════════╗
║ id ║ hash ║ name ║ description ║ date ║ tags ║ languages ║
╠════╬══════════════╬══════════╣════════════════╣═════════╣═══════════════╣══════════════════╣
║INT ║ TEXT ║ TEXT ║ TEXT ║ NUMBER ║ JSON ║ JSON ║
║ 2 ║ b2b22b2b2bb2 ║ two test ║ lorem ipsum b ║ 1233123 ║ ["d","e","f"] ║ ["ko","en","tk"] ║
║ 3 ║ asdasdasdsad ║ 333 test ║ lorem ipsum c ║ 1233123 ║ ["a","d","c"] ║ ["es","de","fr"] ║
║ 4 ║ 4s342s423424 ║ 444 test ║ lorem ipsum d ║ 1233123 ║ ["a","b","g"] ║ ["es","pt","fr"] ║
╚════╩══════════════╩══════════╩════════════════╩═════════╩═══════════════╩══════════════════╝
Желание данных, что-то вроде примера:
SELECT *
FROM files
WHERE (tags = 'a' OR tags = 'b')
AND (languages = 'es' OR languages = 'pt')
или если я позвоню SELECT * FROM files
покажи мне все, включая строки без тегов / языков