Добрый день,
Используется sqlite
Вот такая таблица
sqlite> .schema
CREATE TABLE test(word TEXT,type TEXT);
Вот содержимое
sqlite> .header on
sqlite> select * from test;
word|type
rama|noun
ramada|
car|noun
careta|noun
pila|noun
pilarama|
Что бы я хотел получить:
1) я вытаскиваю список слов у которых тип noun
sqlite> .header off
sqlite> select word from test where type='noun';
rama
car
careta
pila
2) Теперь я хотел бы вытащить строки которые начинаются с каждого из слов выше,
(ну и у которых не проставлен тип) исключая сами слова выше.
Что-то типа такого (не пашет)
sqlite> select word from test where word like (select (word || '%') from test where type='noun');
В данном случае необходимо чтобы вытащило слова
ramada
pilarama
3) JOIN-нить надо?
Я так понимаю нужен множественный like или glob
Так?
sqlite> select t1.word,group_concat(t2.word) from test t1 join test t2 on t2.word glob (t1.word || '?*') and t2.type='' group by t1.word;
rama|ramadan
pila|pilarama
Вечером проверю на реальных данных.
Интересно, буду ждать результата.
Остановился на таком запросе
1) выбрал все слова начинающиеся на букву а
sqlite> create table s1 as select word, type from mytable where word like 'а%';
2) прогнал запрос
sqlite> select t1.word,group_concat(t2.word) from s1 t1 join s1 t2 on t2.word glob (t1.word || '?*') and t2.type='' and length(t1.word) > 5 group by t1.word;
Отрывок с вывода
абжылан|абжыландай
абзалы|абзалында
абонемент|абонементтелу,абонементтеу
абордаж|абордаждау,абордажды,абордаждық
абордажды|абордаждық
абстракт|абстракті
абыржу|абыржулы
абысын|абысын-ажын,абысынды
авангард|авангардистік,авангардтық
авантюрист|авантюристік
авария|авариясыз
автобөлшек|автобөлшектер
автоген|автогенші
автомат|автоматтану,автоматтау,автоматша
автомодель|автомодельші
Как видим, встречается как слово абордаж так и абордажды
В общем, прикольно.