|
|
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Стоит следующая задача: перемножить все имеющиеся варианты слов между собой. У меня есть текст в таблице, где каждое слово в отдельной строке Студент бежит к речке Есть варианты слов в таблице: для глаголов бежит ползет тащится Существительных речке озеру морю В итоге надо получить: Студент бежит к речке Студент ползет к речке Студент тащится к речке Студент бежит к озеру Студент ползет к озеру Студент тащится к озеру Студент бежит к морю Студент ползет к морю Студент тащится к морю Причем именно в виде предложений. Подскажите, пожалуйста, как? Таблицы я сделала как: Главная с предложением: 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 тащится И также для существительных такую же стурктуру сделала. А как дальше писать джойны и главное, сделать слияние, чтобы не слились в одну строчку вообще все слова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 02:58:27 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, 1. пример соития строковых констант и переменых: select concat('a',' и ','б',' сидели на ','трубе') from dual 2. есть также более хитрый оператор group_concat который "склеит" значения из разных записей 3. Как сейчас поставлена, ваша задача не решается средствами чистого SQL-а. Если что-то изменится в предложении -- например к речке будет ползти "Удав" или к морю побежит "Аспирант" то придется делать еше один джоин на выборку (Удав, Студент, Аспирант). Фактически, нужно будет строить и выполнять СКЛ на лету. Это вполне возможно внутри "хранимой процедуры" или даже проще на джаве, руби, c#, etc. 4. конкретно как есть сейчас, решение будет: http://sqlfiddle.com/#!2/713b5c/9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 19:56:05 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
пардон, в предыдушем решении таблица Сентенсе даже лишняя, результат зачетверился неподеЦки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 20:02:43 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Это жестко зашито на определенные id, как я понимаю? Свой пример я упростила, там будет не одна запись про студента, а много разных. Какого нибудь full join в mysql нет? Чтобы все же соединять по таблицам не зная точных id. Хотелось бы, конечно, решить задачу на чистом sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 21:03:11 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, да, как вы поставили задачу снача -- надо чисто зашивать связки заранее. Попробуйте переформулировать задачу ближе к реальной. Основная проблема -- чистый СКЛ не подойдет если заранее вы не знаете какие и сколько связок (джоинтов) будет в запросе. >> Это жестко зашито на определенные id, как я понимаю? В примере я жестко зашил две связки на Fixed на два зашитых ИД. То что связок зашиты -- этого не избежать (на чистом СКЛ) а вот ИД -- наверное -- можно динамически вылавливать из таблицы Сентенсе -- которая может работать как темплейт. Опятьже -- раскрывайте реальную задачу, "будем посмотреть" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 22:06:37 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
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 - как-то вот так. Нужно наиболее производительное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2014, 12:10:17 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
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 или что вы еще знаете? Когда надо -- обрашайтесь к базе за набором слов одного типа. Слысл -- в отработке алгаритма на языке высогоко уровня а не в скорости. Испоользование временых таблиц или массивов языка програмирования -- на ваш вкус Затем этот алгоритм можно переделать (или сразу писать) на язык хранимых процедур. Здесь использование временых таблиц приветствуется Затем можно попробовать написать кодо-генератор который по заданых значениям (конкретная структура предложения) сгенерирует громадный СКЛ и вот он и может быть самым быстрым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 02:11:45 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Извините, пожалуйста, но почему это решение неправильное? Структуру я могу поменять как угодно, почему сделать полность на sql, это ошибка? хочется написать процедуру, передать ей параметр и получить результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 11:50:37 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
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. получаем текст запроса, потом prepare+execute При желании можно и от хардкода в виде этих verb/noun в case-ах избавиться, надо будет завести ещё одну табличку с именами словарных таблиц ElenaTomskС Id_WordClass = 1 - глаголы. Id_WordClass = 2 - существительныеidtablename1verb2noun5fixedну и запрос допилить соответствующим образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 12:58:43 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
>> ElenaTomsk >> Здравствуйте. Извините, пожалуйста, но почему это решение неправильное? >> Структуру я могу поменять как угодно, почему сделать полность на sql, >> это ошибка? Как уж сказал tanglir -- чистый СКЛ требует что бы все связки-жоинты были зафиксированы заранее. >> хочется написать процедуру, передать ей параметр и получить результат. А вот сделать эту задачу на "процедурном СКЛе" -- конечно возможно и нужно -- опятьже tanglir показал вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 18:31:46 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте. таблица со спискм слов у меня уже есть. Я ваш код поменяла по своему разуменю, он не работал. Получается вот так: Тогда в одной строке в первой сразу видно что студент встречается дважды, это не правильно. У меня еще в таблице деталей, основная которая, есть поле OrderWord, в нем хранится порядок, на каком месте слово в предложении. Только даже если сортировать по нему, то все равно будут два студента. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 19:23:13 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskв нем хранится порядок, на каком месте слово в предложенииЯ думал, порядок слов задаётся в sentence.id, но там нигде нет указания, что на месте А с кодом 5(т.е. фиксированное) должно стоять именно слово Б, а не В, Г или Ё. Поэтому генерируются все возможные сочетания. Если у вас это всё-таки где-то задаётся, показывайте уже структуру. Настоящую, а не огрызки. И условие уточните, потому что если исходить из данных приведённой таблицы sentence, то мой вариант вполне себе правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 19:41:41 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglirпоказывайте уже структуру. Настоящую, а не огрызки. И условие уточните, потому что если исходить из данных приведённой таблицы sentence, то мой вариант вполне себе правильный. Здравствуйте. Вот это будет практически полноценная структура, убрала только кучу незначащих здесь полей наподобией всех свойств глагола и тому подобного. С огромным удовольствием и благодарностью распишу еще если что-то нужно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 22:35:59 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
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. Вам бы человека сначала нанять на написание бизнесс задачи, а уж потом в СКЛ идти. Ничего личного, я понимаю что задача интересная и "кудато полезная", но куда она лезет --- сложно понять :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 23:19:11 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте 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. Вам бы человека сначала нанять на написание бизнесс задачи, а уж потом в СКЛ идти. Это не бизнесс задача, это моя курсовая и может быть дипломная потом. И хоть я и настоящая блондинка, но раньше все получалось, мне помогали совсем чуть-чуть, а сейчас этот человек не может:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:26:18 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
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. Код: sql 1. 2. результат Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:42:29 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
исходя из понимания простой вещи, усложняйте для дальнейшего изучения-понимания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:45:02 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovпростое декартовое произведение (!!!???)Ага "Но есть один нюанс" (с). Вернее, даже два: 1) заранее неизвестно ни количество, ни типы слов в предложении 2) отдельные слова должны быть фиксированы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:09:26 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Посмотрите постановку задачи в 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. запрос на формирование заданных шаблонов фраз Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. PNUM TEXT1 Студент утомленно тащится к морю2 от безделья Уголовник тащится Требуется сформировать по заданным шаблонам все возможные вариант построения фраз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:23:22 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
и тут мне стало интересно... авторТребуется сформировать по заданным шаблонам все возможные вариант построения фраз вот фразы Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:51:22 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
вот портянка, покрутите на тестовых дынных вроде работает только 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. Alex_Ustinovчто надо сделать? Запрос для построения этих фраз?Перечитайте тему, ТС в принципе всё объяснила, в особенности в последних постах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:56:29 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
lamer yugaзапрос на формирование заданных шаблонов фразНу и опять же 16713331 . Изменилось предложение, и превед запросу. ТС как раз и хочет не строить под каждое предложение запрос ручками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:59:04 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
как в фильме "Начни сначала": - Вот у меня в песне все понятно - НА НЕДЕЛЬКУ ДО 2-ГО Я УЕДУ В КОМАРОВО... Какие еще могут быть варианты? Есть таблицы (четыре), это понятно. непонятна логика заполнения табл. Sentence (!!!) Это уже готовые фразы или ВАРИАНТЫ возможных отношений слов в таблице? Вот это я так понимаю - результат: 1 Студент утомленно тащится к морю 2 от безделья Уголовник тащится А где условие задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:02:12 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovи тут мне стало интересно... авторТребуется сформировать по заданным шаблонам все возможные вариант построения фраз вот фразы Код: plaintext 1. 2. По шаблону "уголовник тащится" должны быть построены фразы {слово из T1}{слово из T2}, то есть Код: plaintext 1. 2. Аналогично по шаблону "утомленно ползет к речке" должны быть построены фразы {слово из T4}{слово из T2}{слово из T3}, за исключением самого шаблона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:03:25 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, я так понял, lamer yuga тоже учится параллельно или как то так и привела полное условие задачи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:04:23 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Естественно, фразы должны быть в исходном формате с добавлением номера версии, то есть было: напоминание Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Должно быть:фразаверсиясловоидтип(значение из нужной таблицы) 1 0 1 31(Уголовник) 1 0 2 32(тащится) 1 1 1 11(Студент) 1 1 2 12(бежит) 1 2 1 11(Студент) 1 2 2 22(ползет) 1 3 1 11(Студент) 1 3 2 32(тащится) 1 4 1 21(Аспирант) 1 4 2 12(бежит) 1 5 1 21(Аспирант) 1 5 2 22(ползет) 1 6 1 21(Аспирант) 1 6 2 32(тащится) 1 7 1 31(Уголовник) 1 7 2 12(бежит) 1 8 1 31(Уголовник) 1 8 2 22(ползет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:17:44 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovtanglir, я так понял, lamer yuga тоже учится параллельно или как то так и привела полное условие задачи... неправильно понял))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:19:09 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
так мы имеем право добавлять в Sentence что-то? Или это в исходном условии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:26:46 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovтак мы имеем право добавлять в Sentence что-то? Или это в исходном условии? в Sentence шаблоны фраз. По этим шаблонам надо сформировать новые предложения с CROSS JOIN всех слов по типу слова, удалить заданный шаблон и перенумеровать полученные версии фраз, соответствующих заданному шаблону. Или из 16713989 это не ясно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:31:30 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, Это уже готовые фразы будут, они подготоваливаются пользователем, он же заполняет справочники фиксированных и изменяемых слов. Все остальное должна делать программа автоматически:пользоваетель говорит, сколько фраз он хочет получить на основе выбранной и ему они создаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:42:55 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglirlamer yugaзапрос на формирование заданных шаблонов фразНу и опять же 16713331 . Изменилось предложение, и превед запросу. ТС как раз и хочет не строить под каждое предложение запрос ручками. Как раз нет. Приведенный запрос просто формирует заданный шаблон в наглядном виде. Почему вы считаете, что при изменении шаблона фраза будет построена неверно? Аналогично, этот запрос можно адаптировать для формирования вариантов предложений, соответствующих построенной неким чудесным образом таблице-результату. Весь вопрос в том, как построить эту таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:48:33 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте. Извините, пожалуйста, но там получается ошибка, а понять ваш код у меня не получается. Вы не могли бы, пожалуйста пояснить его? Ошибка показывается - нет условия и даже сли там прописать какое-нибудь, то все равно остается, уже не понятно где. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:29:32 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
В собственной постановке ( 16713473 ) задача решена: http://sqlfiddle.com/#!2/f4f82/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. решение Код: 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. фрагмент результатаPNUM VAR_ID WNUM WID CID WORD1 1 1 1 1 Студент1 1 2 1 4 равнодушно1 1 3 1 2 бежит1 1 4 1 3 к речке1 2 1 1 1 Студент1 2 2 1 4 равнодушно1 2 3 1 2 бежит1 2 4 2 3 к озеру...1 143 1 3 1 Уголовник1 143 2 4 4 грустно1 143 3 3 2 тащится1 143 4 3 3 к морю1 144 1 3 1 Уголовник1 144 2 4 4 грустно1 144 3 3 2 тащится1 144 4 4 3 от безделья2 1 2 1 4 равнодушно2 1 4 1 3 к речке...2 15 2 4 4 грустно2 15 4 3 3 к морю2 16 2 4 4 грустно2 16 4 4 3 от безделья Вариации с постоянными и переменными таблицами мне не интересны, посему заморачиваться на них не буду, равно как и на удаление шаблона из результата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:49:45 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
lamer yuga, Ой, я сначала очень обрадовалась, прямо похоже, что то самое! Но только внизу в самом если результаты посмотреть, то вот такое получаетя :( Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 17:15:41 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, но ведь в исходных данных указаны 2 ( два ) шаблона: 1. "Студент", "утомленно", "тащится", "к морю" 2. "грустно", "от безделья" Поэтому в результатах тоже ДВЕ вариативные серии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:56:28 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
lamer yugaПочему вы считаете, что при изменении шаблона фраза будет построена неверно?Хотя бы потому, что тот запрос делает фразу из ровно четырёх слов, а их может быть, о ужас, пять. Или даже шесть :) lamer yugaПриведенный запрос просто формирует заданный шаблон в наглядном видеВообще-то он формирует не шаблон, а варианты по одному жёстко заданному шаблону... lamer yugaАналогично, этот запрос можно адаптировать для формирования вариантов предложений, соответствующих построенной неким чудесным образом таблице-результатуРучками адаптировать? В энный раз повторяю, что "адаптироваться" он должен автоматически. Или, может, это я чего-то не понял? lamer yugaAlex_Ustinovtanglir, я так понял, lamer yuga тоже учится параллельно или как то так и привела полное условие задачи... неправильно понял)))А почему вы тогда так уверены, что поняли условие задачи лучше нас? lamer yugaрешениеПока не вчитывался, но уже вижу просто-таки дохренища материализации. Как там со скоростью? ElenaTomskИзвините, пожалуйста, но там получается ошибка, а понять ваш код у меня не получается.Текст ошибки дайте. У меня на выложенной вами структуре работало (только заменил it_wordtype на id_wordtype, это была явная опечатка). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 05:05:03 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglirlamer yugaПочему вы считаете, что при изменении шаблона фраза будет построена неверно?Хотя бы потому, что тот запрос делает фразу из ровно четырёх слов, а их может быть, о ужас, пять. Или даже шесть :) на самом деле ограничение есть - не больше одного слова из каждой таблицы. А откуда вы взяли ровно четыре слова? tanglirlamer yugaпропущено... неправильно понял)))А почему вы тогда так уверены, что поняли условие задачи лучше нас?Может и не лучше, но - в меру своей испорченности. Хотя, судя по реплике ТС, наши меры идентичны. tanglirlamer yugaрешениеПока не вчитывался, но уже вижу просто-таки дохренища материализации. Как там со скоростью?А вот тут вы правы, со скоростью был бы швах, будь таблицы побольше. А так - нормулёк там со скоростью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 09:21:10 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
PS. Насчет скорости - жду ваше решение;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 09:26:04 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
lamer yugaА откуда вы взяли ровно четыре слова?Сейчас перечитал тот запрос - так это действительно формирование фраз из ровно тех слов, ид которых есть в шаблоне. Я-то думал, это неудачная попытка решить задачу ТС. Тогда это возражение снимается. lamer yugaНасчет скорости - жду ваше решениеУже было 16713822 . Единственный момент - подселекты могут выполняться N раз, спасибо мускльному недооптимизатору. Ну да их можно вообще вынести в отдельные запросы, всё равно текст финального запроса собирается в строке для последующего исполнения, туда же запихнуть и все эти фикс. значения. Хотя всё это фигня - навряд ли у ТС есть длинные предложения, при обработке которых только и была бы заметна разница во времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 10:20:31 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ой так там не просто материализация, там ****** какая материализация: lamer yuga Код: sql 1. 2. и потом 4 вот таких кучи друг на друга помножить причём не обычным, а левым джойном а потом ещё ордербай всей получившейся кучищи :) Хотя... если это переделать для одной фразы (т.е. ограничить каждую подвыборку одной фразой), то, может, и нормально получится. lamer yugaсо скоростью был бы швах, будь таблицы побольшеElenaTomskОбщее число слов около 70 тысячИ это только слов, а сколько будет предложений, остаётся только догадываться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 10:30:47 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglirой так там не просто материализация, там ****** какая материализация: lamer yuga Код: sql 1. 2. и потом 4 вот таких кучи друг на друга помножить причём не обычным, а левым джойном а потом ещё ордербай всей получившейся кучищи :) Хотя... если это переделать для одной фразы (т.е. ограничить каждую подвыборку одной фразой), то, может, и нормально получится. lamer yugaсо скоростью был бы швах, будь таблицы побольшеElenaTomskОбщее число слов около 70 тысячИ это только слов, а сколько будет предложений, остаётся только догадываться Здравствуйте. Извините, а немногли бы пояснить, как работает ваш код? Хотелось самой разобраться в нем, но не получается. Вижу несколько сразу джойнов к словам в фиксированной форме, видимо, их должно быть столько же, сколько будет фиксированных, слов? а почему нельзя сделать вроде бы вот так: select id_word , case wordtype = 1 then (select word from fixedword where id = id_word) end -- и так далее по типам? from detail; Я пробовала, но у меня не получется сделать id = id_word, потому что оно находится выше, чем подзапрос, наверное. Да? И вот это непонятно: select null from dual - это какая то специфическая, служебная таблица таблица? Предложений сейчас в базе около 1000, ожидается больше минимум в-пятеро. Слов в предложении в среднем 10-15, но может быть и до 40, при этом изменяемых слов не менее пяти, максимум 20 пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 00:02:13 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, Ктоме этой курсовой, у вас наверное был/есть/будет какой-нибудь курс по анализу и постановке задач. Несколько человек пытаются понять задачу и вы честно пытаетесь ее обяснить -- но четкого понимания кажется нет. Засим я предлагаю следуюшее: 1. если вы знаете какой-нибудь язык програмирования высокого уровня (жабу, руби, ц#, фортран, басик...) то решите задачу на этом языке и покажите его здесь -- сделаем реверсе енжиниринг и будем думать дальше. Я предлагаю это ради того что бы задачу хоть как-то решить логически правильно, не заморачиваясь на ограничения СКЛ и на ограничения по скорости. Другими словами -- разделить (а) бизнес-задачу -- построить предложения и (б)системные требования -- использование СКЛ и скорость. 2. или сделайте нормальную постановку задачи. на самом деле уже близко -- есть структура данных, есть неплохое обьянение -- остались мелочи. Соберите аттачмент и вашего поста 16710677 , добявьте туда таблицу ПЕРЕНТ и добавьте туда описание из 16712320 и других постов. Обязательно пронумеруйте каждый параграф и каждый СКЛ в тексте -- удобнее будет спрашивать наводяшие вопросы по референсу на номер параграфа. По факту -- это будет добротный кусок курсовика -- постановка технической части задания и методы ее решения. 2.б. ПОсле полного описания таблиц -- начните описание задачи примерно так: Проходит Вася и заводит в таблицу ПАРЕНТ новое предложение. При этом система сразу разбирает предложение на части и записывает части в таблицу ДЕТАИЛ, сохраняя порядок введенных слов в ВОРДПОСИТИОН. После этого система дает возможность Васе отметить какие части предложения фиксированые а для каких он хочет найти альтернативы. (система записывает эти требоеания в ДЕТАИЛ как тип 14, остальные типы 1,3,7,10 система должна опознать сама....). Далее Вася выбирает тип альтернации, напромер "студенческий" или "подводный" или "томный". Эти типы выдаются системой как дроп-давн мену из имеюшихся в таблице АБС. Этот тип впоследствии будет использован как дополнительный филтр для выбора алтернатции слов. Вася также задает максимальное количество результатов -- просто лимит -- и задает способ сортировки -- по алфавиту, по расположению звезд, по настроению женской души в период полураспада отношений итд. Рася жмет кнопку САБМИТ и систем начинает думать и пить кофе. ПОпив кофею, систем достает из таблицы ДЕТАИЛ слова в порадке ВОРДПОСИТИОН и для каждого слова делает следуюшее: если слово имеет тип 14 -- фиксированое, то система радуется и уходит покурить ибо ничего делать не надо. Если деталька имеет тип 1,3,7,10, то система идет в несколько (а я предлагал в одну) таблиц и ишет там алтернативы -- не забывая про дополнительные филтры по типу предложения. Набрав все алтернативы система картезиально перемножает их друг на друга и раскладывает по заданому порядку (ой, а как заданый порядок хранить? или фик с ним с порядком? или еше динамический ОРДЕР БУ писать?). выбирает ТОП-20 из них и выдает Васе. Вася радуется и дарит Лене цветы. Вася ташится и дарит Лене цветы. Вася ташится и дарит Лене киску. Вася ташится и кормит Лене киску. Вася радуется и кормит Лене киску. Вася радуется и кормит Маше киску. Ситема забраковывает Машу потомучто Лена тут фиксирована и от обиды переводит Васю в алтернативы Петя радуется и кормит Лене киску. Женя радуется и кормит Лене киску. Оля радуется и кормит Лене киску. Преподавать негодует почему Оля и Лена попали в одно предложение и вводит дополнительный филтр на тип предложения. 3. Да, вполне можно устроить матричный перебор типа того что вы предложили: авторselect id_word , case wordtype = 1 then (select word from fixedword where id = id_word) end -- и так далее по типам? from detail; НУ в смысле перемножить всё-на-вся и отбирать варианты по словотипам (case wordtype = 1). Для таких задач как раз более процедурный язык или хранимые процедуры подойдух лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2014, 01:09:58 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskВижу несколько сразу джойнов к словам в фиксированной форме, видимо, их должно быть столько же, сколько будет фиксированных, слов?К фикс-словам нет джойнов, они выбираются подзапросами. Как раз потому, что джойны нужны для перебора вариантов, а для фикс-слов нужен всего один вариант. Хотя... можно и обычными джойнами прицепить, что-то я перемудрил с этими подзапросами :) Но подзапросы тоже должны работать. ElenaTomskа почему нельзя сделать вроде бы вот так: select id_word , case wordtype = 1 then (select word from fixedword where id = id_word) endа откуда сервер узнает, из какой строки detail ему брать этот id_word? ElenaTomskЯ пробовала, но у меня не получется сделать id = id_word, потому что оно находится выше, чем подзапрос, наверное. Да?Недочитал. Да :) ElenaTomskИ вот это непонятно: select null from dual - это какая то специфическая, служебная таблица таблица?Да, это системная "пустая" таблица. В принципе, можно было бы и убрать, но тогда надо заморачиваться с тем, что в начале фром-секции первый кроссджойн не нужен. Кода будет больше, а серверу что так, что так одинаково - уж с константными-то таблицами он, слава всем богам, умеет работать без закидонов. ElenaTomskПредложений сейчас в базе около 1000, ожидается больше минимум в-пятеро. Слов в предложении в среднем 10-15, но может быть и до 40, при этом изменяемых слов не менее пяти, максимум 20 пока.Тут вопрос, напротив, в количестве фиксированных слов, именно на них может быть просадка (в варианте с подзапросами). Но это надо уже на реальных данных смотреть. А насчёт пустого условия в where - мистика! Вы же сами видите, в коде-генераторе ничего похожего нет... javajdbcДля таких задач как раз более процедурный язык или хранимые процедуры подойдух лучше.Это с самого начала было ясно, тут весь интерес сделать одним запросом, ну или двумя сборка+экзек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 18:20:03 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. tanglirElenaTomskВижу несколько сразу джойнов к словам в фиксированной форме, видимо, их должно быть столько же, сколько будет фиксированных, слов?К фикс-словам нет джойнов, они выбираются подзапросами. Как раз потому, что джойны нужны для перебора вариантов, а для фикс-слов нужен всего один вариант. Хотя... можно и обычными джойнами прицепить, что-то я перемудрил с этими подзапросами :) Но подзапросы тоже должны работать. Но джойны же быстрее? tanglirselect id_word , case wordtype = 1 then (select word from fixedword where id = id_word) endа откуда сервер узнает, из какой строки detail ему брать этот id_word? [/quot] Фиксированные слова уникальные у меня, если Id слова 7897 например, то второго такого фиксированного не будет. Поэтому можно, наверное, ориеннироваться на Id слова + тип его - фиксированное? tanglirElenaTomskЯ пробовала, но у меня не получется сделать id = id_word, потому что оно находится выше, чем подзапрос, наверное. Да?Недочитал. Да :) скажите, пожалуйста: а это как-то можно исправить или это особенность этой версии sql? У меня последняя версия community .21, кажется. Если это сделать через джойны как-то, то будет работать? ElenaTomskПредложений сейчас в базе около 1000, ожидается больше минимум в-пятеро. Слов в предложении в среднем 10-15, но может быть и до 40, при этом изменяемых слов не менее пяти, максимум 20 пока. tanglirТут вопрос, напротив, в количестве фиксированных слов, именно на них может быть просадка (в варианте с подзапросами). Но это надо уже на реальных данных смотреть. у меня быстрая машина и ssd, а план выполнения смотреть я умею, только понимать не умею пока. :( tanglirА насчёт пустого условия в where - мистика! Вы же сами видите, в коде-генераторе ничего похожего нет... К сожалению я не смогла разобраться в этом никак. Так ни разу не запустилось даже, поэтому и хотела бы переписать это сама, хочется же понять, что умные люди делают!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 20:03:19 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskНо джойны же быстрее?Как правило да. Я просто не сообразил, когда писал тот вариант. ElenaTomskК сожалению я не смогла разобраться в этом никак.Завтра ещё раз проверю и скину дамп, уже точно рабочий. Основанный на вашем кратком описании. ElenaTomskФиксированные слова уникальные у меня, если Id слова 7897 например, то второго такого фиксированного не будет. Поэтому можно, наверное, ориеннироваться на Id слова + тип его - фиксированное?Ориентироваться, конечно, можно, но... видите ли, в чём дело - в получающемся (не в генерирующем) запросе таблица detail не фигурирует в разделе "фром". То есть её там нет. Вообще. А нам надо вытащить слово, соответствующее ворд_ид, расположенному в данной конкретной записи этой самой таблицы. А таблицы-то как бы в запросе нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 21:26:23 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Во вложении дамп с рабочим примером. Создаётся БД "testwords" с несколькими записями и процедурой generate_phrases(параметры - ид предложения и количество записей в результате). Сам запрос чуть-чуть переделан - вместо подзапросов, которые могут исполняться несколько раз, значения фиксированных слов вычисляются разово, но суть вычислений та же, что и в предыдущем варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 12:06:36 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
поправка: в процедуре в этом месте Код: sql 1. в конце строки нужен пробел (в дампе его нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 12:12:57 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
...ну вот, я такой роман написал, а ТС не среагировала... нет в жизни счастья...пойду текилу кушаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 06:40:14 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте! Большое спасибо, все работает. Почти. :( Как только я перехожу на реальные данные, где много записей, то получаю вот такое сообщение: 2 Row 360 was cut by GROUP_CONCAT() SQL1.sql, это вылечела вот так: SET GLOBAL group_concat_max_len=1500000; Но теперь все очень, очень долго работает. При этом оперативная память практически не увиличивается потребление, 500 мегабайт сервер взял и больше не просит, а есть 32 гигабайта, а процессор на 26 процентов загружен, core i7. Если я правильно все помню, это значит, что большого набора данных сейчас не загружено и что процессор ничего не обрабатывает, потому что сложный запрос забрал бы всю память или намного больше нагрузил процессор? Наверное, подготавливается кеш запроса, потому что в итоге я получила сообщение: "Incorrect key file for table 'C:\Temp\#sql478_9_a.MYI'; try to repair it SQL7.sql" Поискала, нашла вот тут: http://www.sql.ru/forum/986802/126-incorrect-key-file-for-table-tmp-sql?hl=incorrect key file for table, но тут нет решения. Места на диски С еще 40 гигабайт, это ssd. Формат таблиц InnoDB, базу восстанавливала из бекапа несколько раз, размер бекапа 5 мегабайт, это же совсем мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 15:46:33 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Люди, неужели никто не знает, что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2014, 15:08:14 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, народ в интернете говорит что это от нехватки места вообше или в ТЕМП директории. Кто-то советует пересоздать, уменьшить количество индексов. Возможно имеет смысл оптимизировать по датапотоку: Обрабатывать кусками по 5-10%. Если есть возможность, хорошо бы за параллелить, но это надо знать конкретно что вы написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2014, 16:08:29 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Дело в том, что я это тоже все уже прочитала и в своем предыдущем сообщении написала. Место есть, оперативной памяти тоже много, поэтому совершенно непонятно, что не работает. Код это не мой вовсе, это tanglir написал, за что я ему очень благодарна, просто он не работает на моих данных настоящих. Последний его код в этой ветке написаный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2014, 19:42:03 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, Пожалуйста, всегда давайте точные ссылки. Вы про этот 16735620 код или какой? Если по ссылке, то это генератор. Для конкретного анализа нужен код который сей генератор создал. Этот код 16715202 , как я понимаю был с ошибкой и генератор потом был улучшен. Таким образом, нужно: 1. реально сгенерированый код. 2. его ( ЕКСПЛЕЙН ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2014, 20:20:16 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
... и чтоб два раз не вставать. 1. ЕКПЛЕЙН сделать на реальной базе (не волнуйтесь, это занимает секунду) 2. Когда вы получите сгенерированый код с кучей CROSS JOIN сделайте и покажите ресультат: select count(1) from <table> где <табле> замените (по одной за раз) на все подряд таблицы с CROSS JOIN. Т.е должно быть 5-8 результатов COUNT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2014, 20:30:42 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
В принципе, если можно гарантировать, что ид фиксированных слов никогда не будут ссылаться на отсутствующие ид, то можно в генераторе лефтджойны заменить (секция "when 14" во втором групконкате) на просто джойны - может, оптимизатору станет полегче. Можно ещё ордербай убрать, вам же неважно, какие именно 20 результатов выйдут, или важно? Ну и таки да, ждём эксплейн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2014, 05:22:15 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте! Очень рада, что вы ответили!!! Знаете, у меня на боевых таблица, я их переделала немного названия, получается вот такой код для выполнения: Код: sql 1. 2. 3. 4. 5. 6. и здесь есть вот здесь punctuat12 и punctuat18. Они у меня есть в tbl_templatedetail, в этих позициях, то-есть 12 и 18, но в собственно джойнах нет кода, последний tbl_punctuation punctuat10. Кроме того, как я поняла вашу логику, все значения из таблицы tbl_punctuation просто добавляются cross joinom, но это же тоже неверно, у меня же на нужном месте стоит или запятая или тире или еще что-нибудь одно, пунктуация, это просто разновидность фиксированных слов. ТАКже прикладываю explain который сделался если я убираю из вышеприведенного кода как раз эти ссылки на punctuat, инече запрос не запускается совсем. Извините, вы только не обижайтесь, пожалуйста, но может быть, я могу вам как-то оплатить работу? Потому что получается, что вы столько для меня делаете просто так, неудобно очень. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 21:33:12 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Вот такие у меня результаты по выборке из каждой таблицы с explain: по прилагательным так 1 SIMPLE tbl_adjective index (null) FK_tbl_adjective_tbl_comparison_Id_Comparison 1 (null) 390 Using index по существительным так 1 SIMPLE tbl_noun index (null) FK_tbl_noun_tbl_wordnumber_Id_WordNumber 1 (null) 528 Using index по глаголам так 1 SIMPLE tv index (null) FK_tbl_verb_tbl_infinitive_Id_Infinitive 1 (null) 157 Using index по знакам препинания 1 SIMPLE tp index (null) PRIMARY 4 (null) 12 Using index по фиксированным словам так вот 1 SIMPLE tf index (null) UI_cWord 198 (null) 2978 Using index Вот я знаете не понимаю, почему только в последнем случае используются уникальный индекс, первичный ключ тоже не используется, при том что он есть у меня во всех таблицах, а почему-то используются индексы FK. Я думала, что при count должен использоваться именно PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 21:47:06 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, Елена, плохо отформатированый код -- сильно мешает.... сильно. Вместо того что что-то умное (или не умное) сказать, сначала я потратил 10 минут на форматирование: Код: 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. 63. 64. 65. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 22:01:33 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, у меня так программа выдает, не знаю, как ее форматировать. Но посмотрела сейчас выполнение, действительно не хватает дискового пространства, но это просто ужасно! Выполнялось это примерно 5 минут и забрало 38 гигабайт на диске, больше просто нет и оно умерло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 22:23:37 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Ой, я когда убрала вот сейчас order by, знаете, оно сразу выполнилось, моментально! Скаожите пожалуйста, почему такая разница получается от просто сортировки, вот перед этим запускала, было пять минут и сьело весь диск? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 22:35:34 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskjavajdbc, у меня так программа выдает, не знаю, как ее форматировать. Но посмотрела сейчас выполнение, действительно не хватает дискового пространства, но это просто ужасно! Выполнялось это примерно 5 минут и забрало 38 гигабайт на диске, больше просто нет и оно умерло. 1. форматировать можно ручками, и во многих программах есть опция ФОРМАТ (например в MySQL Workbench) 2. ОРДЕР БУ заставляет прграмму перебрать ВСЕ варинаты, их у вас громадное количество и они забивают диск. Если убрать ОРДЕР БУ то програма мгновено наберет первые 10 и выйдет по ЛИМИТ 10 3. по оптимизации пока не смотрел, может позже сегодня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 23:36:39 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskjavajdbc, Здравствуйте. Вот такие у меня результаты по выборке из каждой таблицы с explain: по прилагательным так 1 SIMPLE tbl_adjective index (null) FK_tbl_adjective_tbl_comparison_Id_Comparison 1 (null) 390 Using index по существительным так 1 SIMPLE tbl_noun index (null) FK_tbl_noun_tbl_wordnumber_Id_WordNumber 1 (null) 528 Using index по глаголам так 1 SIMPLE tv index (null) FK_tbl_verb_tbl_infinitive_Id_Infinitive 1 (null) 157 Using index по знакам препинания 1 SIMPLE tp index (null) PRIMARY 4 (null) 12 Using index по фиксированным словам так вот 1 SIMPLE tf index (null) UI_cWord 198 (null) 2978 Using index Вот я знаете не понимаю, почему только в последнем случае используются уникальный индекс, первичный ключ тоже не используется, при том что он есть у меня во всех таблицах, а почему-то используются индексы FK. Я думала, что при count должен использоваться именно PK. ну вообшето я спрашивал результат КАУТА а не ЕХПЛАИН этих маленьких СКЛов. НО ЕХПЛАИН на самом деле показывает примерное количетво записей и этого достаточно. В виду специфики задания -- система должна "перемножить" 390 ажиктивов на 528 наунов на...на...на... прочем столько раз сколько переменных слов в предложении. Результат получается громадное чило записей и они убивают диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 23:58:31 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 00:00:21 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Елена, напомните, плиз, 1. если слово фиксированое, то его ВОБШЕ трогать не надо? 2. темплейты относятся только к переменным словам? 3. подвердите (или опровергинете) что все пунктуации на самом деле фиксированы. Если так, можно ли слить их в фиксированые слова? 4. сгенерированый СКЛ вызывает несколько вопросов (типа #1 и #2 вверху). МОжете ли вы подвердить что логика сгенерированого запроса верная? 5. Если сможете, попробуйте БЕЗ генератора самой составить СКЛ для какого нибудь конкретного единичного предложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 00:08:00 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Фиксированные слова, да. Они не меняются. Теплейтдетайл содержит в себе полное описание всей фразы. В нем и изменяемые и неизменяемые слова. Знаки препинания можно было бы вынести в фиксированные, но зачем? У меня их всего 12, а фиксированных слов больше, конечно, там есть идекс у меня, только все равно не понятно, зачем сливать. Я их специально разделяла для достижения максимальной скорости. То как работает код от tanglir, очень похоже на то, что мне нужно, но окончательно не могу сказать, потому что не получается полную фразу сделать пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 09:53:24 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, с тем, почему пропадают куда-то punctuation12 и так далее - тоже разобралась. Не хватает длины varchar, даже максимальной, поставила mediumtext и все стало нормально! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 15:13:05 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskjavajdbc, Здравствуйте. Фиксированные слова, да. Они не меняются. Теплейтдетайл содержит в себе полное описание всей фразы. В нем и изменяемые и неизменяемые слова. Знаки препинания можно было бы вынести в фиксированные, но зачем? У меня их всего 12, а фиксированных слов больше, конечно, там есть идекс у меня, только все равно не понятно, зачем сливать. Я их специально разделяла для достижения максимальной скорости. То как работает код от tanglir, очень похоже на то, что мне нужно, но окончательно не могу сказать, потому что не получается полную фразу сделать пока. 1. если между фиксированым словом и фиксированой пунктуации нет функциональной разницы, то слить их надо. В генераторе Танглира пунктуация отрабатывается как "переменная" и выдает кучу (как оказалось сейчас) ненужных кросс жоинтов. 2. для проверки логической корректности решения -- умешите количество записей в базе и уменьшите длину предложения, скажем 3 фиксированых и 2 переменных слова. 3. знаете ли вы что такое денормализация? Кто вам составил схему? Ваша схема какято дуальная, с одной стороны непонятно зачем разные типы слов вынесены в разные таблицы, а с другой стороны используются ИД слов вместо более привычного САМОГО слова как ИД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 18:59:48 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Можно не добавлять в таблицу, а просто переделатаь код, что я и сделала. Теперь стало правильно подбирать пунктуацию. Что такое денормализация, я знаю. И еще я знаю, что нормализация куда лучше, не вижу никаких плюсов от слияния, извините. Код получился вот такой, непонятно только одно, может быть, можно как-то сделать чтобы не генерировать его заново каждый раз? Или я глупости говорю? :( Очень смущает большое колличество джойнов к одной и то же таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2014, 23:35:59 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
>> javajdbc, >> Можно не добавлять в таблицу, а просто переделатаь код, что я и сделала. >> Теперь стало правильно подбирать пунктуацию. OK, в генераторе изменени вроде правильно. ПО любому имеет смысл показывать результат генерации тоже. >> Что такое денормализация, я знаю. >> И еще я знаю, что нормализация куда лучше, >> не вижу никаких плюсов от слияния, я говорил про две (несвязаные) вещи: -- слияние пунктуации и фиксированых слов -- денормализация -- замена ИД слова на само слово во избежании дополнительных жоинтов >> извините. Не надо извинятся. Задачу можно решить разными способами. В том числе и без слияния и без денормализации. Пока надо сделать ЛЮБОЙ логическио правильно работаюший вариант. Вернемся к оптимизации после логической валидации решения. >> Код получился вот такой, непонятно только одно, >> может быть, можно как-то сделать чтобы не генерировать >> его заново каждый раз? К сожалению, чистой СКЛ не позволяет сделать то что вы хотите. По определению -- СКЛ требуюет знать связки в момент написания, а у вас в момент выполнения может оказатся разные связки. Теоретически, ЕСЛИ у вас конечное (не больше чем Н) количество слов в предложении и ЕСЛИ у вас конечное число типов слов (не нольше чем М), то можно написать СУМАШЕДШИЙ и ОЧЕНЬ МЕДЛЕНЫЙ скл с перемножением всех М типов на каждом из Н слов. Остается только генерации СКЛ на лету для каждого предложения. Напромер как предложил Танглир или на жаве/ц#/руби итд. >> Или я глупости говорю? :( Вы имеете право говорить и желать все что угодно. Ответ остается в силе: В пределах СКЛ ваша задача (практически) не решается. С использованием Stored Procedures или других языков -- пожалуйста. >> Очень смущает большое >> колличество джойнов к одной и то же таблице. Ответ простой -- один жоинт на каждое переменое слово. У вас будет 20 переменых слов в предложении -- будет 20 жоинтов. (Жоинты на фиксированые слова можно не считать, они быстрые. К томуже по логике не нужны и легко убираются легкой денормализацией). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2014, 07:20:22 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, А разве нельзя сделать один джойн к таблице изменяемых слов? Или оптимизатор сам поймет, что несколько раз подключиться к одной таблице ненужно? А можно сделать джойн с функциями или хранимиыми процедурами? Имеющийся код уже очень трудно читается, а мне еще нужно добавить к нему еще более совсем сложные конструкции. Если бы вот можно было бы куски с джойнами по фиксированным например словам бы вынести бы куда-то в функцию, она бы уже вернула рекордсет и с ним джойн. А саму функцию изменять было бы проще. Но видимо функцию нельзя, она же одно значение всегда возвращает, а надо много. Как-то иначе можно? все также не могу понять, зачем объединять таблицы фиксированных слов и пунктуацию, какой от этого выигрышь, кроме упрощения написания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2014, 12:20:49 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
>> А разве нельзя сделать один джойн к таблице изменяемых слов? >> Или оптимизатор сам поймет, что несколько раз подключиться к одной таблице ненужно? Вы поставили задачу: на КАЖДОЕ переменое слово перебрать варианты. КАЖДЫЙ перебор есть новый джоин (если мы делаем это на СКЛ) >> А можно сделать джойн с функциями или хранимиыми процедурами? Имеющийся код уже очень трудно читается, а мне еще нужно добавить к нему еще более совсем сложные конструкции. Если бы вот можно было бы куски с джойнами по фиксированным например словам бы вынести бы куда-то в функцию, она бы уже вернула рекордсет и с ним джойн. А саму функцию изменять было бы проще. Но видимо функцию нельзя, она же одно значение всегда возвращает, а надо много. Как-то иначе можно? Вот! мы подходим к идее расширить рамки за пределы (чистого) СКЛа. Можно создать такую програму на ЛЮБОМ языке - хранимые процедурым, жава, фортран, идт. По сути, програма ниже делает тоже самое что и генератор Танглира. - - - - - - - - Входная переменая ПРЕДЛОЖЕНИЕ(список слов с типами) ВЫходная переменая РЕСАЛТ_СЕТ(список предложений) для каждого СЛОВО из ПРЕДЛОЖЕНИЕ СТАРТ ЕСЛИ СЛОВО.тип==фикс то "добавать слово в РЕСАЛТ_СЕТ". АЛИ-НЕТ то селект соответствуюшие ВАРИАНТЫ из таблицы и "добавить ВАРИНАТЫ в РЕСУЛТ_СЕТ" ЕНД вернуть РЕСУЛТ_СЕТ - - - - - - - процедура "добавать слово в РЕСАЛТ_СЕТ" и "добавить ВАРИНАТЫ в РЕСУЛТ_СЕТ" будут довольно простые тоже. Конечно, если у вас 100 переменых по 10 тысяч варинатов -- вы убьете компютер хоть на СКЛ, хоть на любом языке. - - - - - - - - >> все также не могу понять, зачем объединять таблицы фиксированных >> слов и пунктуацию, какой от этого выигрышь, кроме упрощения написания. Слитием всех фиксированых фрагментов, а также слитием ВСЕ слов в одну таблицу вы сильно упростите генератор без практически никакой потери скорости. Упрошение генератора -- меньше ошибок и лучшая читабельность и понимание происходяшего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2014, 18:15:48 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Большое спасибо за советы. Наверное, дальше я уже сама все доделаю, есть только один самый последний вопрос. Он скорее к tanglir, но может быть вы тоже знаете? Как можно сделать, так, чтобы не попадали дубли? Наверное, я сама тоже знаю, надо применить Distinct. Но может быть можно сделать так, чтобы они эти дубли просто сразу не попадали, какое-то там условие добавить. Извините, если я глупости говорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 21:57:22 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, дубли чего? По идее каждое предложение и так будет уникально, если дублей слов нет в исходных таблицах. Или вы про "дубли" с одинаковыми словами, но разной пунктуацией? Так переделайте код для пунктуации по аналогии с кодом для фикс. слов (я уже это предлагал), и эти "дубли" исчезнут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 05:33:02 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте. Я просто плохо описываю, наверное. Потому что хочется самой разобраться, но не получается. У меня там есть еще дополнительные настройки, которые помогают работать с предложениями. Например, описание должностей или описание действий, или по возрасту группировка, много еще всяких условий. Это лежит в двух дополнительных таблицах tbl_subdirection and tbl_attribute. Между ними и деталями темплейта установлена связь, это таблицы tbl_l_templatedetail_subdirection и tbl_l_templatedetail_attribute. И такие же таблицы есть для связи с существительным: tbl_l_noun_subdirection and tbl_l_noun_attribute. tbl_subdirection может только одно значение содержать, а вот атрибуты много : нампример студент и солдат могут быть такими атрибутами: 1 молодые люди 2 мужчины Дальше пользователь назначает, какие именно атрибуты могут использоваться и должны отбираться слова только такие, какие имеют этот атрибут. На каждое изменяемое слово могут быть свои атрибуты, разные. Вот так. И я вот такой запрос написала, но только очень много дублей получается, а значит я ошиблась где-то. У вас было cross join noun у меня стало cross join (SELECT n.Nominative, na.Id_Attribute FROM tbl_templatedetail tt JOIN tbl_l_templatedetail_subdirection ts ON tt.Id_TemplateDetail = ts.Id_TemplateDetail JOIN tbl_l_templatedetail_attribute ta ON tt.Id_TemplateDetail = ta.Id_TemplateDetail JOIN tbl_l_noun_subdirection ns ON ts.Id_SubDirection = ns.Id_SubDirection JOIN tbl_l_noun_attribute na ON ta.Id_Attribute = na.Id_Attribute JOIN tbl_noun n ON ns.Id_Noun = n.Id_Noun WHERE tt.Id_Template = 3 AND tt.Id_WordClass = 10) noun Но это не работает потому что много дублей и потому что все равно не получается правильные атрибуты для каждого слова отобрать почему-то. Получается что все атрибуты вместе назначаются на каждое слово, по-моему. А с фиксированными словами я уже все поменяла ! Работает хорошо и правильно !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 21:23:30 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! tanglir, помогите, пожалуйста, закончить ! совсем чуть-чуть осталось, а без вас у меня никак не получается. :~(((((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 09:40:59 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, завтра буду занят, а послезавтра могу посмотреть. Пока что попрошу показать на примере, как это должно работать - т.е: 1)предложение из templatedetail; 2)слова, соответствующие ему например, из Noun; 3)соответствующие этим словам записи в доп.таблицах, о которых идёт речь; 4)что выбирает (какие параметры процедуры помимо задаёт) пользователь и что он должен получить (а чего - не должен). А то постановка задачи и впрямь как-то мутновато выглядит, на что вам в "проектировании" уже указывали. PS. create table этих табличек также приветствуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:45:47 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Девушке уже намекали (например 16726363 ) что надо писать хорошее задание, но как-то все ad-hoc происходит. Elena, сделайте нормальную постановку задачи. на самом деле уже близко -- есть структура данных, есть неплохое обьянение -- остались мелочи. Соберите аттачмент и вашего поста 16710677, добявьте туда таблицу ПЕРЕНТ и добавьте туда описание из 16712320 и других постов. Обязательно пронумеруйте каждый параграф и каждый СКЛ в тексте -- удобнее будет спрашивать наводяшие вопросы по референсу на номер параграфа. По факту -- это будет добротный кусок курсовика -- постановка технической части задания и методы ее решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:40:17 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglirElenaTomsk, завтра буду занят, а послезавтра могу посмотреть. Пока что попрошу показать на примере, как это должно работать - т.е: 1)предложение из templatedetail; 2)слова, соответствующие ему например, из Noun; 3)соответствующие этим словам записи в доп.таблицах, о которых идёт речь; 4)что выбирает (какие параметры процедуры помимо задаёт) пользователь и что он должен получить (а чего - не должен). А то постановка задачи и впрямь как-то мутновато выглядит, на что вам в "проектировании" уже указывали. PS. create table этих табличек также приветствуется. Здравствуйте. create table прикладываю. Извините, но у меня постановка выглядит мутно потому что я не знаю, как правильно делать пока. Мне самой понятно, а обьяснить не получается? Вот пример: Общий темплейт: Студент идет к пруду . Для него могут быть варианты: Студент, Декан, Солдат, Офицер, Спортмен. Пользователь в настройках выбирает: молодые люди. Это id_subdirection = 1. Тогда там будет в tbl_templatedetail td join tbl_l_templatedetail_subdirection ts on td.Id_SubDirection = ts.Id_SubDirection т.е должны отобраться только студент/офицер/спортсмен. Соответственно получается так вот так: select n.Noun from tbl_templatedetail td join tbl_l_templatedetail_subdirection ts on td.Id_SubDirection = ts.Id_SubDirection Join tbl_l_noun_subdirection sn on on ts.Id_SubDirection = sn.Id_SubDirection join tbl_noun n on sn.Id_noun = n.Id_noun; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2014, 10:20:02 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. Я не понимаю, что значит "хорошая постановка". :( Может быть, вы мне подскажете пример или что нужно исправить в моем описании? Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2014, 10:21:53 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskjavajdbc, Здравствуйте. Я не понимаю, что значит "хорошая постановка". :( Может быть, вы мне подскажете пример или что нужно исправить в моем описании? Спасибо ! "хороший вопрос есть пол ответа". Варинатов описания задачи много. (Более того, для решения часто надо несколько (!) описаний. Например, обшее на высоком уровне. бизнес описание, техническое описание, описание проверок и принятия...) Я попытался дать (несколько фривольный) пример тут: 16726363 У вас уже достаточно много сделано, правда в разбросаном виде. Сейчас, если Танглир или кто еше будут решать вторую половину задачи (настройки выбора слов) им придется опять лезть в 35 предыдуших постов стобы восстановить понимание таблиц и связок. Посему, бы вам сделать несколько документов: 1. обшее описание задачи, основные игроки и типичнуй юзе-кейс 2. Дб диаграма физическая или достаточно детальная логическая 3. скипты создания таблиц, заполнение тестовыми данными, тестовый пример ввода и ожидаемый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 00:31:25 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
>> Общий темплейт: Студент идет к пруду . как систем принимает этот темплате? он один вводится с консоли? или такие темплейтов10 тысяч подается как бач файл? >> Для него могут быть варианты: Студент, Декан, Солдат, Офицер, Спортмен. кто делает список вариантов? они есть глобально для всех в системе с самого начала (заведены админом?) или пользователь может завести варинаты сам только для себя? только для данного темплейте? >> Пользователь в настройках выбирает: молодые люди. Это id_subdirection = 1. стоп. кто задает какие под-группы имеются для каждой категории слов? Это глобальные (для всех) настройки или на каждого пользователя свои? Этот выбор обязательный? или кто-то может ничего не выбирать? >> Тогда там будет в tbl_templatedetail td join tbl_l_templatedetail_subdirection ts >> on td.Id_SubDirection = ts.Id_SubDirection >> т.е должны отобраться только студент/офицер/спортсмен. логика не сложная и понятная. Но вот с названиями таблиц -- беда -- субдиркшн? может лучше назвать filter_group. Можно ли убрать префикс ТБЛ_ у всех таблиц? >> Соответственно получается так вот так: >> select n.Noun from tbl_templatedetail td >> join tbl_l_templatedetail_subdirection ts on td.Id_SubDirection = ts.Id_SubDirection >> Join tbl_l_noun_subdirection sn on on ts.Id_SubDirection = sn.Id_SubDirection >> join tbl_noun n on sn.Id_noun = n.Id_noun; ВЫглядит нормально, проверьте на тестровых данных. Если работает как ожидается то можно вставлять в генератор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 00:51:53 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbc, Здравствуйте. >> Общий темплейт: Студент идет к пруду . >как систем принимает этот темплате? >он один вводится с консоли? Всего темплейтов около 500, они заведены в систему жестко и вводятся только администратором. Пользователь выбирает один нужный в форме, ну то есть в приложении. И еще он выбирает для него нужные направления и атрибуты. Атрибуты так же лежат в справочнике, пользователь его не редактирует, только выбор. И направления тоже лежат в справочники, пользователь его не редактирует. Он вообще ничего не редактирует, только выбирает. >стоп. кто задает какие под-группы имеются для каждой категории слов? >Это глобальные (для всех) настройки или на каждого пользователя свои? Глобальные. > Этот выбор обязательный? или кто-то может ничего не выбирать? Направление обязательное, атрибуты необязательные. >> Тогда там будет в tbl_templatedetail td join tbl_l_templatedetail_subdirection ts >> on td.Id_SubDirection = ts.Id_SubDirection >> т.е должны отобраться только студент/офицер/спортсмен. >логика не сложная и понятная. Но вот с названиями таблиц -- беда -- >субдиркшн? может лучше назвать filter_group. >Можно ли убрать префикс ТБЛ_ у всех таблиц? А зачем? Меня так учили, давать префиксы, v_, tbl_, p_ и так далее, чтобы по взгляду на код было понятно, что происходит. >> Соответственно получается так вот так: >> select n.Noun from tbl_templatedetail td >> join tbl_l_templatedetail_subdirection ts on td.Id_SubDirection = ts.Id_SubDirection >> Join tbl_l_noun_subdirection sn on on ts.Id_SubDirection = sn.Id_SubDirection >> join tbl_noun n on sn.Id_noun = n.Id_noun; ВЫглядит нормально, проверьте на тестровых данных. Если работает как ожидается то можно вставлять в генератор. Если бы. :( Это получается подзапрос, вместо того, что раньше писал tangir. Там была одна таблица tbl_noun, а теперь должен стать вот этот подзапрос. НО ! Здесь нет конкретной привязки к главному запросу и будут выбраны существительные из всех возможных деталей теплейта, а надо ведь только для одного. Код: sql 1. 2. 3. 4. 5. 6. 7. Как-то вот так, но это у меня не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 11:28:19 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
>> Общий темплейт: Студент идет к пруду . >как систем принимает этот темплате? >он один вводится с консоли? Всего темплейтов около 500, они заведены в систему жестко и вводятся только администратором. Пользователь выбирает один нужный в форме, ну то есть в приложении. И еще он выбирает для него нужные направления и атрибуты. Атрибуты так же лежат в справочнике, пользователь его не редактирует, только выбор. И направления тоже лежат в справочники, пользователь его не редактирует. Он вообще ничего не редактирует, только выбирает. OK -- это надо добавить в описание задачи >стоп. кто задает какие под-группы имеются для каждой категории слов? >Это глобальные (для всех) настройки или на каждого пользователя свои? Глобальные. OK -- это надо добавить в описание задачи > Этот выбор обязательный? или кто-то может ничего не выбирать? Направление обязательное, атрибуты необязательные. OK -- это надо добавить в описание задачи >> Тогда там будет в tbl_templatedetail td join tbl_l_templatedetail_subdirection ts >> on td.Id_SubDirection = ts.Id_SubDirection >> т.е должны отобраться только студент/офицер/спортсмен. >логика не сложная и понятная. Но вот с названиями таблиц -- беда -- >субдиркшн? может лучше назвать filter_group. >Можно ли убрать префикс ТБЛ_ у всех таблиц? А зачем? Меня так учили, давать префиксы, v_, tbl_, p_ и так далее, чтобы по взгляду на код было понятно, что происходит. Это устаревшая система. В СКЛ тип идентификатора легко определяется позицией, например в блоке FROM могут быть только таблицы , вью или подселекты. Иногда используются суффиксын промер _V для вьюшек. Если таблиц много, то префиксы иногда используют для разделения на бизнес секции, напромер CS_ customer service, PD_ таблицы для продуктов и категорий... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 18:23:21 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomsk, Про подзапрос на под-дирекции -- варинатов два -- 1) ждать Танглира 2) собрать с самого начала все срипты -- создания таблиц, -- заполнение тест-данными (включая таблицы сабдирекшн) (2-3 темплейта, 3-4 слова каждого типа, парочка субдирекшенов) -- работаюший генератор кода -- СКЛ который выдает кодгенератор на конкретных данных -- результат который выдает сденерированый СКЛ. -- результат который надо получить отфильтровкой по сабдирекшеном. Убедитесь что ваш пакет можно развернуть на чистой базе данных и запостите сей пакет сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 18:42:15 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
javajdbcСейчас, если Танглир или кто еше будут решать вторую половину задачи (настройки выбора слов) им придется опять лезть в 35 предыдуших постов стобы восстановить понимание таблиц и связок.Ну в принципе структура без обоих субдирекшенов у меня есть (правда, написанная мной где-то в середине темы, так что названия таблиц там другие). И даже вроде понятно, что такое наун_субдирекшен - это вроде как "группы слов (существительных)", причём - судя по тексту запроса - каждое слово может состоять только в одной группе. А вот что такое темплейт_субдирекшен - я, честно говоря, не пойму. Вроде как каждое слово темплейта может принадлежать к одной (и только одной) группе, но что это за группы? и чем они отличаются от групп, задаваемых для частей речи?.. ...стоп, не так :) читаю вот это: Код: sql 1. 2. 3. 4. и ничего не понимаю. Тут у нас есть 2 набора групп - один для слов темплейта, второй для существительных. При этом ид группы - одинаковый что там, что там . ЯНП, а зачем вообще делать 2 набора групп, если они друг друга тупо дублируют?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 11:06:57 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте. Про группы я постараюсь очень обьяснить. Получается так: Пользователь выбирает теплейт, например вот этот: Студент идет к морю. Есть некоторые дополнительные условия, которые заранее определяет администратор: речь может идти о мужчинах, о молодых людях, об учащихся и так далее, таких условий много разных. Это храниться в таблице tbl_subdirection. Потом администратор определяет для данного темплейта какие именно subdirection можно использовать в каких именно позициях. Это храниться в tbl_template_subdirection. Потом пользователь на форме (у меня это еще не готово) выбирает нужный темлейт и нужное направление. Как я уже писала, например, id_subdirection = 1. Это "молодые люди". А дальше должны отобраться только те существительные, которым администратор заранее тоже определил свойство "молодые люди". Например, "солдат/школьник/студент". Вот. Поэтому вот они не совсем друг друга дублируют, в одном случае это направление для собственно темплейта, а во втором для частей речи. Может быть, мы с вами можем куда-нибудь перейти для обсуждения, в емейл или еще куда-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2014, 19:00:33 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
ElenaTomskПотом администратор определяет для данного темплейта какие именно subdirection можно использовать в каких именно позициях . Это храниться в tbl_template_subdirection.Тут не всё понятно. Получается, админ для каждого слова в шаблоне задаёт (ну или не задаёт) "направление"? И, как я понимаю, их может быть несколько (для каждого слова)? иначе зачем вообще эта доп.таблица... ElenaTomskПотом пользователь на форме (у меня это еще не готово) выбирает нужный темлейт и нужное направление. Как я уже писала, например, id_subdirection = 1. Это "молодые люди".Он может выбрать только одно направление или несколько? Предполагаю второй вариант, но мало ли... ElenaTomskА дальше должны отобраться только те существительные, которым администратор заранее тоже определил свойство "молодые люди".Ага. То есть список направлений (имхо лучше бы это были "фильтры" или "теги") всё-таки общий как для шаблонов, так и для слов, и хранится он в tbl_subdirection? PS. Сейчас болею, так что соображаю не очень ( PPS. почта на листру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 18:02:32 |
|
||
|
перемножить все имеющиеся варианты слов - помогите, пожалуйста ! !!!
|
|||
|---|---|---|---|
|
#18+
tanglir, Здравствуйте. 1. Да, для каждого слова может задаваться одно или несколько направления. 2. Конечно, несколько. 3. На все вопросы: да, вы все правильно поняли. Вот я вас про емейл не поняла, извините. Оставлю свой, вот : gedver@bk.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 11:48:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1833854]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
128ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 477ms |

| 0 / 0 |
