Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!! / 25 сообщений из 88, страница 1 из 4
11.10.2014, 02:58:27
    #38773905
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
Стоит следующая задача: перемножить все имеющиеся варианты слов между
собой.

У меня есть текст в таблице, где каждое слово в отдельной строке

Студент
бежит
к
речке


Есть варианты слов в таблице:

для глаголов
бежит
ползет
тащится

Существительных
речке
озеру
морю

В итоге надо получить:

Студент бежит к речке
Студент ползет к речке
Студент тащится к речке
Студент бежит к озеру
Студент ползет к озеру
Студент тащится к озеру
Студент бежит к морю
Студент ползет к морю
Студент тащится к морю

Причем именно в виде предложений. Подскажите, пожалуйста, как?

Таблицы я сделала как:

Главная с предложением:
Id Id_Word Id_WordClass
1 1 5
2 2 1
3 2 5
4 1 2

C Id_WordClass = 5 - это неизменяемы слова. С Id_WordClass = 1 - глаголы.
Id_WordClass = 2 - существительные

В самих таблицах:
Id_Word Word
1 бежит
2 ползет
3 тащится

И также для существительных такую же стурктуру сделала. А как дальше писать джойны и главное, сделать слияние, чтобы не слились в одну строчку вообще все слова?
...
Рейтинг: 0 / 0
11.10.2014, 19:56:05
    #38774079
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomsk,

1. пример соития строковых констант и переменых:
select concat('a',' и ','б',' сидели на ','трубе') from dual

2. есть также более хитрый оператор group_concat
который "склеит" значения из разных записей

3. Как сейчас поставлена, ваша задача не решается
средствами чистого SQL-а. Если что-то изменится
в предложении -- например к речке будет ползти
"Удав" или к морю побежит "Аспирант" то придется делать
еше один джоин на выборку (Удав, Студент, Аспирант).
Фактически, нужно будет строить и выполнять СКЛ
на лету. Это вполне возможно внутри "хранимой процедуры"
или даже проще на джаве, руби, c#, etc.

4. конкретно как есть сейчас, решение будет:

http://sqlfiddle.com/#!2/713b5c/9
...
Рейтинг: 0 / 0
11.10.2014, 20:02:43
    #38774084
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
пардон, в предыдушем решении
таблица Сентенсе даже лишняя,
результат зачетверился неподеЦки.
...
Рейтинг: 0 / 0
11.10.2014, 21:03:11
    #38774107
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
javajdbc,

Это жестко зашито на определенные id, как я понимаю? Свой пример я упростила, там будет не одна запись про студента, а много разных. Какого нибудь full join в mysql нет? Чтобы все же соединять по таблицам не зная точных id.
Хотелось бы, конечно, решить задачу на чистом sql.
...
Рейтинг: 0 / 0
11.10.2014, 22:06:37
    #38774134
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomsk,

да, как вы поставили задачу снача -- надо
чисто зашивать связки заранее.
Попробуйте переформулировать задачу
ближе к реальной.

Основная проблема -- чистый СКЛ не
подойдет если заранее вы не знаете какие
и сколько связок (джоинтов) будет в запросе.

>> Это жестко зашито на определенные id, как я понимаю?

В примере я жестко зашил две связки на Fixed на
два зашитых ИД.
То что связок зашиты -- этого не избежать (на чистом СКЛ)
а вот ИД -- наверное -- можно динамически вылавливать из
таблицы Сентенсе -- которая может работать как темплейт.

Опятьже -- раскрывайте реальную задачу,
"будем посмотреть"
...
Рейтинг: 0 / 0
12.10.2014, 12:10:17
    #38774272
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
javajdbc,

Здравствуйте. Реальная задача такая же, там у меня только сложней структура.
Смысл - получить несколько произвольных предложений из кучи всех возможных. Я подумала, что сделать сразу все и потом выбрать из них нужное количество указав Limit будет лучше, чем вызывать одну процедуру несколька раз.

Основная таблица - tbl_detail
В ней id слова и id его типа + еще куча разных настроек, уточняющих для выбора слова.

Самих слов и их типов может быть много, до 100 на одно предложение, поэтому фиксированное значение я использовать не смогла бы. (((

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

Или сделать функцию, которая выбирала бы одно произвольное слово из кучи и Group_Concat ее и остальные значения

select group_concat (Word, my_function_noun(id_word), my_function_verb(id_word) from
tbl_detail where Id_Sentence 3 - как-то вот так.

Нужно наиболее производительное решение.
...
Рейтинг: 0 / 0
13.10.2014, 02:11:45
    #38774660
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomskjavajdbc,

Здравствуйте. Реальная задача такая же, там у меня только сложней структура.
Смысл - получить несколько произвольных предложений из кучи всех возможных. Я подумала, что сделать сразу все и потом выбрать из них нужное количество указав Limit будет лучше, чем вызывать одну процедуру несколька раз.

Основная таблица - tbl_detail
В ней id слова и id его типа + еще куча разных настроек, уточняющих для выбора слова.

Самих слов и их типов может быть много, до 100 на одно предложение, поэтому фиксированное значение я использовать не смогла бы. (((

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

Или сделать функцию, которая выбирала бы одно произвольное слово из кучи и Group_Concat ее и остальные значения

select group_concat (Word, my_function_noun(id_word), my_function_verb(id_word) from
tbl_detail where Id_Sentence 3 - как-то вот так.

Нужно наиболее производительное решение.

чтобы что-то ускорять надо сделать хоть одно
логически правильное работаюшее решение.

Например, сделайте решение полностью на
языке C#, Java, perl или что вы еще знаете?
Когда надо -- обрашайтесь к базе за набором
слов одного типа. Слысл -- в отработке алгаритма
на языке высогоко уровня а не в скорости.

Испоользование временых таблиц или массивов
языка програмирования -- на ваш вкус

Затем этот алгоритм можно переделать (или сразу писать)
на язык хранимых процедур. Здесь использование
временых таблиц приветствуется

Затем можно попробовать написать кодо-генератор который
по заданых значениям (конкретная структура предложения)
сгенерирует громадный СКЛ и вот он и может быть
самым быстрым.
...
Рейтинг: 0 / 0
13.10.2014, 11:50:37
    #38774893
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
javajdbc,

Здравствуйте. Извините, пожалуйста, но почему это решение неправильное? Структуру я могу поменять как угодно, почему сделать полность на sql, это ошибка? хочется написать процедуру, передать ей параметр и получить результат.
...
Рейтинг: 0 / 0
13.10.2014, 12:58:43
    #38775013
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomskпочему это решение неправильное?потому что в скле соединяются таблицы, причём заранее известно, какие с какими
у вас же количество соединений (о чём уже сказали выше) зависит от количества записей таблицах (по крайней мере в одной из них)
ElenaTomskхочется написать процедуру, передать ей параметр и получить результат
Нужно наиболее производительное решениеДа не вопрос
http://sqlfiddle.com/#!2/cd81a0/11
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select 
concat(
 "select concat_ws(',',"
 ,group_concat(concat(
    case id_wordclass when 1 then 'verb' when 2 then 'noun' else 'fixed' end
    ,id
    ,'.word')
  order by id)
 ,") as res from (select null from dual) ddd"
 ,group_concat(concat(
    " cross join "
    ,case id_wordclass when 1 then 'verb verb' when 2 then 'noun noun' else 'fixed fixed' end
    ,id)
  order by id)
 ," order by чего-нибудь limit 10") as prep_st
from sentence where Id_Sentence=3

получаем текст запроса, потом prepare+execute
При желании можно и от хардкода в виде этих verb/noun в case-ах избавиться, надо будет завести ещё одну табличку с именами словарных таблиц
ElenaTomskС Id_WordClass = 1 - глаголы.
Id_WordClass = 2 - существительныеidtablename1verb2noun5fixedну и запрос допилить соответствующим образом.
...
Рейтинг: 0 / 0
13.10.2014, 18:31:46
    #38775523
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
>> ElenaTomsk

>> Здравствуйте. Извините, пожалуйста, но почему это решение неправильное?
>> Структуру я могу поменять как угодно, почему сделать полность на sql,
>> это ошибка?

Как уж сказал tanglir -- чистый СКЛ требует что бы
все связки-жоинты были зафиксированы заранее.

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

А вот сделать эту задачу на "процедурном СКЛе" --
конечно возможно и нужно -- опятьже tanglir показал вариант.
...
Рейтинг: 0 / 0
14.10.2014, 19:23:13
    #38776628
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
tanglir,

Здравствуйте. таблица со спискм слов у меня уже есть. Я ваш код поменяла по своему разуменю, он не работал. Получается вот так:

Тогда в одной строке в первой сразу видно что студент встречается дважды, это не правильно. У меня еще в таблице деталей, основная которая, есть поле OrderWord, в нем хранится порядок, на каком месте слово в предложении. Только даже если сортировать по нему, то все равно будут два студента. :(
...
Рейтинг: 0 / 0
14.10.2014, 19:41:41
    #38776648
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomskв нем хранится порядок, на каком месте слово в предложенииЯ думал, порядок слов задаётся в sentence.id, но там нигде нет указания, что на месте А с кодом 5(т.е. фиксированное) должно стоять именно слово Б, а не В, Г или Ё. Поэтому генерируются все возможные сочетания. Если у вас это всё-таки где-то задаётся, показывайте уже структуру. Настоящую, а не огрызки. И условие уточните, потому что если исходить из данных приведённой таблицы sentence, то мой вариант вполне себе правильный.
...
Рейтинг: 0 / 0
15.10.2014, 22:35:59
    #38778024
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
tanglirпоказывайте уже структуру. Настоящую, а не огрызки. И условие уточните, потому что если исходить из данных приведённой таблицы sentence, то мой вариант вполне себе правильный.

Здравствуйте. Вот это будет практически полноценная структура, убрала только кучу незначащих здесь полей наподобией всех свойств глагола и тому подобного.

С огромным удовольствием и благодарностью распишу еще если что-то нужно!
...
Рейтинг: 0 / 0
15.10.2014, 23:19:11
    #38778052
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomsk,

1. более стандартным является суффих _id
а не префикс id_

2. попробуйте поместить ВСЕ слова в ОДНУ
таблицу и добавить поле typeword со значениями
'verb','fixed','adject'.... и.т.д. ну или
форенд-ки ИД на таблицу typeword

3. соответсвено таблица связок тоже будет одна.

4. далее, в какой таблице лежит шаблон ?
Каким образом из входных параметров (3, "для студентов")
получается цепочка 1,3,7,10,14 ?

авторВ итоге выбирается произвольный id - например, 3.
Далее выбирается тип предложения - "для студентов".

Получается некоторый шаблон получается:

1 - глагол
3 - знак препинания
7 - прилагательное
10 - существительное
14 - фиксированное слово

5. Что такое ID_PARENT=3 ? понятно что это заданое значение,
но для какой таблицы?

6. каким образом в результируюшей таблице
полился порадок которым мы наблюдаем?
Порядо типов слов получились 14,3,10,3,1,14,14 --
это никак не похоже на шаблон типов 1,3,7,10,14

7. Вам бы человека сначала нанять на написание
бизнесс задачи, а уж потом в СКЛ идти.
Ничего личного, я понимаю что задача интересная и
"кудато полезная", но куда она лезет --- сложно понять :-)
...
Рейтинг: 0 / 0
16.10.2014, 11:26:18
    #38778321
ElenaTomsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
Здравствуйте

javajdbcElenaTomsk,
2. попробуйте поместить ВСЕ слова в ОДНУ
таблицу и добавить поле typeword со значениями
'verb','fixed','adject'.... и.т.д. ну или
форенд-ки ИД на таблицу typeword


Я думала об этом. С одной стороны, оно упростит выборку, с другой - создаст кучу ненужных индексов. Общее число слов около 70 тысяч. При этом изменяемых среди них около 2 тысяч. А нужны будут индексы по всем свойствам глаголов, по всем свойствам прилагательных, существительных и еще индекс для поля, изменяемое это слово или нет.
И еще будет куча ненужных полей в таблице, глаголов меньше всего, а свойств у них больше всего.

javajdbc4. далее, в какой таблице лежит шаблон ?


есть сам текст, он лежит в таблице parent, есть он же, уже разбитый по словам и их типам, это в таблице detail

javajdbcКаким образом из входных параметров (3, "для студентов")
получается цепочка 1,3,7,10,14 ?


автоматически определятся по наличию слова в определенной таблице.

1 - глагол
3 - знак препинания
7 - прилагательное
10 - существительное
14 - фиксированное слово[/quot]

javajdbc5. Что такое ID_PARENT=3 ? понятно что это заданое значение,
но для какой таблицы?


Как я уже говорила выше лежит таблица parent, в которой образец "Студент идет к морю". Далее этот образец автоматически распознается и ложиться уже в таблицу detail. основная работа идет с ней.

javajdbc6. каким образом в результируюшей таблице
полился порадок которым мы наблюдаем?
Порядо типов слов получились 14,3,10,3,1,14,14 --
это никак не похоже на шаблон типов 1,3,7,10,14


Это не порядок слов. Порядок определятся в positionword. "14,3,10,3,1,14,14" - это типы слов,
1 - глагол
3 - знак препинания
7 - прилагательное
10 - существительное
14 - фиксированное слово

Получается так:
Неизменяемое
знак препинания
изменяемое существительное
знак препинания
глагол
Неизменяемое
Неизменяемое

javajdbc7. Вам бы человека сначала нанять на написание
бизнесс задачи, а уж потом в СКЛ идти.


Это не бизнесс задача, это моя курсовая и может быть дипломная потом. И хоть я и настоящая блондинка, но раньше все получалось, мне помогали совсем чуть-чуть, а сейчас этот человек не может:(
...
Рейтинг: 0 / 0
16.10.2014, 11:42:29
    #38778345
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
ElenaTomsk,
не придумывайте лишнего. Задача очень простая (если вы не занимаетесь формализацией языка, в чем я очень сомневаюсь)

исходные данные
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
 -- --------------------------------------------------------

-- глагол второе слово --
-- Структура таблицы `gl`
--

CREATE TABLE `gl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nam` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=Aria  DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `gl`
--

INSERT INTO `gl` (`id`, `nam`) VALUES
(1, 'ушел'),
(2, 'побежал'),
(3, 'уехал');

-- --------------------------------------------------------

-- местоимение - первое слово
-- Структура таблицы `m`
--

CREATE TABLE `m` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nam` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=Aria  DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `m`
--

INSERT INTO `m` (`id`, `nam`) VALUES
(1, 'Я'),
(2, 'студент'),
(3, 'препод');

-- --------------------------------------------------------

-- подлежащее третье слово
-- Структура таблицы `pl`
--

CREATE TABLE `pl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nam` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=Aria  DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `pl`
--

INSERT INTO `pl` (`id`, `nam`) VALUES
(1, 'река'),
(2, 'поле'),
(3, 'небо');

окончательный запрос - простое декартовое произведение (!!!???)
Код: sql
1.
2.
SELECT m.nam, gl.nam, pl.nam
FROM m, gl, pl;


результат
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Я	ушел	река
студент	ушел	река
препод	ушел	река
Я	побежал	река
студент	побежал	река
препод	побежал	река
Я	уехал	река
студент	уехал	река
препод	уехал	река
Я	ушел	поле
студент	ушел	поле
препод	ушел	поле
Я	побежал	поле
студент	побежал	поле
препод	побежал	поле
Я	уехал	поле
студент	уехал	поле
препод	уехал	поле
Я	ушел	небо
студент	ушел	небо
препод	ушел	небо
Я	побежал	небо
студент	побежал	небо
препод	побежал	небо
Я	уехал	небо
студент	уехал	небо
препод	уехал	небо
...
Рейтинг: 0 / 0
16.10.2014, 11:45:02
    #38778352
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
исходя из понимания простой вещи, усложняйте для дальнейшего изучения-понимания...
...
Рейтинг: 0 / 0
16.10.2014, 13:09:26
    #38778515
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
Alex_Ustinovпростое декартовое произведение (!!!???)Ага "Но есть один нюанс" (с). Вернее, даже два:
1) заранее неизвестно ни количество, ни типы слов в предложении
2) отдельные слова должны быть фиксированы
...
Рейтинг: 0 / 0
16.10.2014, 13:23:22
    #38778544
lamer yuga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
Посмотрите постановку задачи в http://sqlfiddle.com/#!2/265abe/1
данные
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
create table t1 as -- 1
select  1 id1, 'Студент' Word1 union all
select  2 , 'Аспирант' union all
select  3 , 'Уголовник';

create table t2 as -- 2
select  1 id2, 'бежит' Word2 union all
select  2, 'ползет' union all
select  3, 'тащится';

create table t3 as -- 3
select  1 id3, 'к речке' Word3 union all
select  2, 'к озеру' union all
select  3, 'к морю' union all
select  4, 'от безделья';

create table t4 as -- 4
select  1 id4, 'равнодушно' Word4 union all
select  2, 'весело' union all
select  3, 'утомленно' union all
select  4, 'грустно';

Create table Sentence (
  pnum int, wnum int,
  wid int, cid int);
insert Sentence values
  -- 1. Студент утомленно тащится к морю
  (1,1,1,1),(1,2,3,4),(1,3,3,2),(1,4,3,3)
  -- 2. от безделья угловник тащится
  ,(2,1,4,3),(2,2,3,1),(2,3,3,2);

запрос на формирование заданных шаблонов фраз
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select s.pnum
  , group_concat(
    coalesce(Word1, Word2, Word3, Word4)
    order by s.wnum
    separator ' '
    )text
from Sentence s
left join t1 on t1.id1=s.wid and s.cid=1
left join t2 on t2.id2=s.wid and s.cid=2
left join t3 on t3.id3=s.wid and s.cid=3
left join t4 on t4.id4=s.wid and s.cid=4
group by s.pnum
;

PNUM TEXT1 Студент утомленно тащится к морю2 от безделья Уголовник тащится

Требуется сформировать по заданным шаблонам все возможные вариант построения фраз
...
Рейтинг: 0 / 0
16.10.2014, 13:51:22
    #38778593
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
и тут мне стало интересно...
авторТребуется сформировать по заданным шаблонам все возможные вариант построения фраз
вот фразы
Код: plaintext
1.
2.
маша мыла раму
папа забивает гвоздь
мама готовит обед
что надо сделать? Запрос для построения этих фраз? Если варианты построения, то какие еще варианты могут быть?
...
Рейтинг: 0 / 0
16.10.2014, 13:56:29
    #38778607
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
вот портянка, покрутите
на тестовых дынных вроде работает
только concat_ws почему-то чудит, если унутре у него есть подзапросы - я переделал на простой конкат, только добейте в результирующий запрос пробелов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
set @idparent=3;
select 
concat(
 "select concat("
 ,group_concat(case id_wordtype
     when 1  then concat('verb',positionword,'.word')
     when 10 then concat('noun',positionword,'.word')
     when 3  then concat('punctuat',positionword,'.word')
     -- <...>
     when 14/*fixed-id*/ then 
      concat('(SELECT f.word FROM fixed f join detail d on f.id=d.id_word where d.positionword=',positionword,' and d.id_parent=',@idparent,')')
     else '\'<unknown wordtype!>\''
     end
  order by positionword)
 ,") as res from (select null from dual) ddd"
 ,group_concat(case id_wordtype
     when 1  then concat('cross join verb verb',positionword)
     when 10 then concat('cross join noun noun',positionword)
     when 3  then concat('cross join punctuat punctuat',positionword)
     -- <...>
     when 14/*fixed-id*/ then ''
     else ''
     end
  order by positionword separator ' ')
 ," order by 1 limit 10") as prep_st
from detail where Id_Parent=@idparent


Alex_Ustinovчто надо сделать? Запрос для построения этих фраз?Перечитайте тему, ТС в принципе всё объяснила, в особенности в последних постах.
...
Рейтинг: 0 / 0
16.10.2014, 13:59:04
    #38778610
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
lamer yugaзапрос на формирование заданных шаблонов фразНу и опять же 16713331 . Изменилось предложение, и превед запросу.
ТС как раз и хочет не строить под каждое предложение запрос ручками.
...
Рейтинг: 0 / 0
16.10.2014, 14:02:12
    #38778614
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
как в фильме "Начни сначала":
- Вот у меня в песне все понятно - НА НЕДЕЛЬКУ ДО 2-ГО Я УЕДУ В КОМАРОВО...

Какие еще могут быть варианты?
Есть таблицы (четыре), это понятно.
непонятна логика заполнения табл. Sentence (!!!) Это уже готовые фразы или ВАРИАНТЫ возможных отношений слов в таблице?


Вот это я так понимаю - результат:
1 Студент утомленно тащится к морю
2 от безделья Уголовник тащится

А где условие задачи?
...
Рейтинг: 0 / 0
16.10.2014, 14:03:25
    #38778617
lamer yuga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
Alex_Ustinovи тут мне стало интересно...
авторТребуется сформировать по заданным шаблонам все возможные вариант построения фраз
вот фразы
Код: plaintext
1.
2.
маша мыла раму
папа забивает гвоздь
мама готовит обед
что надо сделать? Запрос для построения этих фраз? Если варианты построения, то какие еще варианты могут быть?
По шаблону "уголовник тащится" должны быть построены фразы {слово из T1}{слово из T2}, то есть
Код: plaintext
1.
2.
"Студент   бежит", "Студент   ползет", "Студент   тащится",
"Аспирант  бежит", "Аспирант  ползет", "Аспирант  тащится",
"Уголовник бежит", "Уголовник ползет", "Уголовник тащится"
но исключить исходную фразу "уголовник тащится"

Аналогично по шаблону "утомленно ползет к речке" должны быть построены фразы {слово из T4}{слово из T2}{слово из T3}, за исключением самого шаблона
...
Рейтинг: 0 / 0
16.10.2014, 14:04:23
    #38778619
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
tanglir,

я так понял, lamer yuga тоже учится параллельно или как то так и привела полное условие задачи...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!! / 25 сообщений из 88, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]