|
|
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 http://sqlfiddle.com/#!2/b25879/1 Ого, мне с моими зачаточными знаниями синтаксиса надолго хватит разбираться) Хух, начали… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 17:07:20 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
А что это вообще за сайт, и почему там два окна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 17:08:33 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejk, слева создание схемы дынных и её наполнение справа - собственно запрос(ы) ...там же на кнопках написано, неужели непонятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2014, 06:22:49 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Решил пока вот так (на что хватило знаний), не смейтесь) Но появилась проблемка… Вот такие ошибки выдаёт: Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /home/… on line 51 Warning: implode() [function.implode]: Invalid arguments passed in /home/… on line 64 Код: php 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. Думал с утра соображу — не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 09:11:16 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Уточнение: так происходит, если пользователь вводит только слова, которых ещё нет в БД. Если среди введённых слов есть хоть одно и в БД, то отлично выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 09:15:20 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejkтак происходит, если пользователь вводит только слова, которых ещё нет в БД. Если среди введённых слов есть хоть одно и в БД, то отлично выполняетсяЕсли нет ни одного слова, то результатом запроса будет таблица с нулём записей. В этом случае этот цикл Код: php 1. не выполняется ни разу, а массив "$massiv_rezultata" должен создаваться как раз там. Ну и дальше пошло-поехало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 10:04:38 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
" tanglir]andrejkтак происходит, если пользователь вводит только слова, которых ещё нет в БД. Если среди введённых слов есть хоть одно и в БД, то отлично выполняетсяЕсли нет ни одного слова, то результатом запроса будет таблица с нулём записей. В этом случае этот цикл Код: php 1. не выполняется ни разу, а массив "$massiv_rezultata" должен создаваться как раз там. Ну и дальше пошло-поехало.[/quot]" Огромное спасибо, решил так: Код: php 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 10:39:03 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 http://sqlfiddle.com/#!2/b25879/1 Пробую у себя на сервере, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. [/SRC] выдаёт ошибки: #1005 - Can't create table 'webart_servis_kluchevyx_slov.tst_filekeys' (errno: 150 Percona-XtraDB, Supports transactions, row-level locking, and foreign keys ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 15:16:51 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Блин, думал что запрос делает что надо, а он, гад, выбирает всё подряд) Можно ли вот это Код: sql 1. 2. 3. 4. 5. 6. 7. изменить так, чтобы Код: sql 1. выбирал не все изображения, которым удовлетворяет хоть одно условие из Код: sql 1. 2. , а те, которым удовлетворяют сразу все условия из Код: sql 1. 2. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 16:06:02 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejkа те, которым удовлетворяют сразу все условиясм.мой вариант запроса (а может, и тот, что с склфидл, не помню) - там надо неравенство на равенство поменять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 16:10:37 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
tanglirandrejkа те, которым удовлетворяют сразу все условиясм.мой вариант запроса (а может, и тот, что с склфидл, не помню) - там надо неравенство на равенство поменять Я в нём мало что понимаю. Если можешь, подставь туда мои поли и таблицы, может чё пойму. прокомментируй логику , пожалуйста. tablizca_izobrazhenij (id, izobrazheniya) tablizca_slov (id, slova) tablizca_svyazej (id_izobrazheniya, id_slova) А в моём простом варианте никак уже не вырулить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 16:41:30 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Ну хоть скажите, какие темы изучить в MySQL? Я не знаю возможностей его логики. Если просто синтаксис, то я могу почитать, но тут упёрся, что даже не знаю, что читать. Всё читать, чтоб понять, что мне поможет — это затянется… Хочется сделать, чтоб хоть как-то фурычило, хочу посмотреть вообще, что это получится, а потом править, править, улучшать и править. Мне тут ребята предлагали варианты, но я не понимаю некоторые части кода — это синтаксис там или их условные обозначения. Прошу расписать логику, что делает та конструкция, которую вы мне предлагали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 17:58:49 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Уже и так извратился — не помогает почему-то… ПОЧЕМУ? ПОЧЕМУ? ПОЧЕМУ? ПОЧЕМУ? ПОЧЕМУ? ПОЧЕМУ? ПОЧЕМУ? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 23:21:01 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
$m = 0; и $m++; лишние ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 23:24:08 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejk$m = 0; и $m++; лишние Ошибся, не лишние… Уже с ума схожу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2014, 23:25:20 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejkЯ в нём мало что понимаю. Если можешь, подставь туда мои поли и таблицы, может чё пойму. прокомментируй логику , пожалуйста. 16310800 16311976 А в примере Сударя007 и комментарии есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 10:48:15 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Я благодарен за такие подробные примеры с комментариями, но, видно, мне нужно подучиться, чтобы их понять. Я пока не могу понять, что такое: w.нужные_поля words w f2w.idfile=f.id t0 и т. д… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 10:59:14 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejkЯ пока не могу понять, что такое: >w.нужные_поля Это и есть нужные поля. Например, w.id >words w Правильней было бы написать words AS w - это задание псевдонима таблицы в запросе. Чтобы каждый раз полное имя не набирать. В моём примере в общем-то всё равно, а вот с вашими названиями таблиц сэкономит кучу места и добавит читабельности (имхо). >f2w.idfile=f.id Эээ... это условие связи. "Ид файла в таблице связей"="ид файла в таблице файлов" >t0 Опять же псевдоним, но не для имеющейся таблицы, а для результата подзапроса. >и т. д… А далее вам надо почитать что-нибудь про скл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 11:10:05 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejk , если хотите конкретной помощи - укажите (желательно под спойлером) DDL ваших таблиц и несколько строк тестовых данных (не скриншотами, а текстом), а так же результат, который требуется получить конкретно на этих данных. Раз уж с самостоятельной адаптацией нескольких готовых вариантов такие проблемы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 11:46:42 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 andrejk , если хотите конкретной помощи - укажите (желательно под спойлером) DDL ваших таблиц и несколько строк тестовых данных (не скриншотами, а текстом), а так же результат, который требуется получить конкретно на этих данных. Раз уж с самостоятельной адаптацией нескольких готовых вариантов такие проблемы... Это я сделаю попозже, не могу сразу всё охватить. Сейчас пока у меня такой вопрос всплыл… Да, кстати, вот так решил примитивным синтаксисом запрос: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. [/SRC] Вопрос такой: почему по отдельности части запроса выполняются быстро, а вместе зависают минут на 8? Не могу понять, как БД на последнем этапе ищет, что её так грузит. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 16:18:49 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejk, потому что (и вроде бы я тут об этом уже писал) IN-подзапросы до версии 5.5 включительно очень хреново обрабатываются оптимизатором. JOIN-вариант, который вы отказываетесь разбирать, на хоть сколько-нибудь значимых объёмах работает быстрее, ну и всякие плюшки (наподобие все слова/не все слова/только M из N слов) к нему проще прикрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 16:58:42 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
tanglirandrejk, потому что (и вроде бы я тут об этом уже писал) IN-подзапросы до версии 5.5 включительно очень хреново обрабатываются оптимизатором. JOIN-вариант, который вы отказываетесь разбирать, на хоть сколько-нибудь значимых объёмах работает быстрее, ну и всякие плюшки (наподобие все слова/не все слова/только M из N слов) к нему проще прикрутить. Ну понятно, что хреново, но это общий ответ, а я хочу понять, где жрутся ресурсы, что там произходит. Там какие-то циклы, но я не могу понять, какие и гдк. Просто хочу понять и всё, немогу без этого дальше нормально жить. А JOIN я подучу. Сейчас пока знакомлюсь с псевдонимами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 17:03:14 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
andrejkа я хочу понять, где жрутся ресурсы, что там произходит. Там какие-то циклы, но я не могу понять, какие и гдкна примере: Код: sql 1. 2. Выделенный подзапрос при выполнении запроса будет выполнен столько раз, сколько записей в таблице t1, и пофиг, что с t1 его результат не связан вообще никак. В некоторых других СУБД оптимизаторы это видят и выполняют такие подзапросы один раз. Но не в мускле. А вы их в 3 слоя один на другой нагромождаете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 17:07:58 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Попробую разбить на два подзапроса… У меня прогресс, я смог прочесть ваш пример) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2014, 17:33:41 |
|
||
|
Как организовать бд для вот такой задачи?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 andrejk , если хотите конкретной помощи - укажите (желательно под спойлером) DDL ваших таблиц и несколько строк тестовых данных (не скриншотами, а текстом), а так же результат, который требуется получить конкретно на этих данных. Раз уж с самостоятельной адаптацией нескольких готовых вариантов такие проблемы... Ух… Что такое спойлер? Как указать DDL? Я почитал и так понял, что это комманды, которыми создавалась БД? Текст комманд создания БД указать? Как получить тестовые данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 10:04:15 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38702172&tid=1834285]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 408ms |

| 0 / 0 |
