Sqlite Query для поиска в комбинации нескольких столбцов в строке - PullRequest
0 голосов
/ 20 марта 2012

Я застрял с запросом в базе данных Sqlite.Полная структура таблицы немного сложна, поэтому я приведу пример с моей проблемой.У меня есть 2 таблицы, такие как

T1
_id       name      v1        v2        v3
1         test      4         3         1
2         to        1         2         2
3         show      2         2         2
4         what      4         2         4
5         I         1         1         1
6         mean      3         3         1

T2
_id       name
1         this
2         is
3         a
4         test

v1, v2, v3 являются внешними ключами T2 _id и в комбинации приведут к одной строке.

В этом примере:

T1 _id 1: testathis
T1 _id 2: thisisis
T1 _id 3: isisis
T1 _id 4: testistest
T1 _id 5: thisthisthis
T1 _id 6: aatest

И в этой результирующей строке я хочу найти и получить таблицу результатов.Например, если строка поиска - «isi» (в запросе sql «% isi%»), я хочу получить таблицу результатов, подобную этой:

name   v1v2v3
to     thisisis
show   isisis

Это, вероятно, легко, но я полностью застрялВот.Я уже пробовал несколько способов, включая group_concat () и различные комбинации select ... where оговорок.Хотя я пробовал запрос, похожий на этот один.Но я всегда ошибаюсь из-за того, что строка должна быть конкатенирована из строк другой таблицы.

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Карл, дай попробуй:

select t1.name, t21.name || t22.name || t23.name as v1v2v3 from t1
join t2 t21 on t1.v1 = t21._id
join t2 t22 on t1.v2 = t22._id
join t2 t23 on t1.v3 = t23._id
where t21.name || t22.name || t23.name like '%isi%'

У меня нет SQLite, чтобы проверить его прямо сейчас, но он должен работать:)

1 голос
/ 20 марта 2012
SELECT
  T1.name as name,
  tmpV1.name || tmpV2.name || tmpV3.name as v1v2v3
FROM
  T1
JOIN
  T2 as tmpV1 on T1.v1 = tmpV1._id 
JOIN
  T2 as tmpV2 on T1.v2 = tmpV2._id 
JOIN
  T2 as tmpV3 on T1.v3 = tmpV3._id
WHERE
  v1v2v3 like '%isi%'
;

Редактировать: aww Мости избил меня.

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