|
|
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток уважаемые форумчане. Прошу помощи в доработке EAV. Имеем упрощенную таблицу основных записей. упрощенная схема хранения Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В чистом виде данные характеристик [img] http://clip2net.com/clip/m0/1389792562-clip-7kb.png?nocache=1 [/img] Теперь собственно проблема, необходимо выбрать нужные ID при поиске по этой таблице. Делаем запрос Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. пытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Этот запрос работает, но он работает на расширение поиска а не на сужение. То есть чем больше галочек в фильтре поставить, тем больше блоков OR будет добавлено и в выборку попадет большее количество записей. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Если же поставить между двумя выборками характеристик AND естествено ничего не найдется. Собственно в этом и вопрос, как построить запрос с обратной логикой поиска, чем больше характеристик в запросе, тем больше сужается выдача. Заранее благодарен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:07:58 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Забыл дамп прикрепить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:09:40 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proпытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Да щазз! Шаблон: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:19:14 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina, Возможно это хорошо ) но я вообще ничего не понял из того что вы написали, если не сложно, используйте названия таблиц из дампа. Вообще ничего не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:24:50 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
AkinaШаблон:Да уж больно медленный шаблон-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:26:48 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:44:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinafolder-proпытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Да щазз! Шаблон: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. непонятно что за поле av_pairs_count и что выдаст запрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:45:22 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-pro Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. как доработать его, чтобы заработало, сейчас выдает null вместо av_pairs_count подставлено 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:48:29 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
miksoft, Вы предлагаете на каждый тип товара отдельную таблицу? скажем 500 типов товаров, и 500+ таблиц где будут храниться характеристики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:49:43 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-promiksoft, Вы предлагаете на каждый тип товара отдельную таблицу? скажем 500 типов товаров, и 500+ таблиц где будут храниться характеристики?В данный момент не предлагаю. Чтобы предлагать такие вещи, нужно очень хорошо знать задачу, что малореально в формате форума. Хотя, теоретически, и в 500 таблицах ничего страшного не вижу. Я говорил и именно о самом запросе в рамках текущей ситуации. Уж хотя бы WHERE можно было бы добавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:57:48 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
miksoftAkinaШаблон:Да уж больно медленный шаблон-то... Конечно, это же идея, а не реализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 19:04:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinamiksoftпропущено... Да уж больно медленный шаблон-то... Конечно, это же идея, а не реализация. Если предложили этот вариант, может объясните его суть? ибо вопрос не решен пока что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 20:51:34 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
miksoft, Суть проекта. есть доска объявлений - каталог товаров, у объявлений есть характеристики, у каждого раздела свои, "по типу яндекс маркета". фильтров будет не мало, думаю до 500 шт. Изначально думал использовать вариант 1 тип - 1 таблица хранения характеристик, с редактором характеристик который меняет таблицу. Но плодить большое количество таблиц как то показалось страшным. записей основной таблицы будет в районе 500 000 шт. если предположить что у каждого товара будет по 16 характеристик, то таблица jos_md_catalog_message_criterions будет содержать порядка 8 000 000 записей. что в такой ситуации вы могли бы предложить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 20:59:42 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#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. 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. Если запрос даёт NULL - либо нет запрошенных данных, либо есть дубликаты, либо ты в запросе таки накосячил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:10:29 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina, нет не накосячил, я просто не мог его суть понять и что там делает av_pairs_count теперь суть понятна, спасибо. У вас под рукой нет случайно статей на манипуляцию с этим шаблоном? Или может быть ссыль на книгу "на русском", где подобная техника более подробно описывается? из того что нагуглил, особо разобраться не смог ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:20:47 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina, да и IN откуда взялось, в первом ответе было другое ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:22:59 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinafolder-proпытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Да щазз! Шаблон: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Лучше всё же Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:58:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proУ вас под рукой нет случайно статей на манипуляцию с этим шаблоном?Да я его прямо тут от руки набросал... какие нахрен статьи ещё. Потому, кстати, и дорабатываю, в частности folder-proда и IN откуда взялось, в первом ответе было другое ) это по сути абсолютно то же самое, просто запись более читабельная. MasterZivЛучше всё же Тогда уж Код: sql 1. Но мой шаблон гораздо удобнее при неопределённом количестве пар... а если начнётся огород типа "эти две пары обязательно, из вон тех пяти пар должно быть не менее трёх, а этих двух быть не должно", то он вообще становится чертовски привлекательным.... К слову, для моего шаблона, если в таблице есть подходящий индекс (в коем поля идут в правильном порядке) - он будет использоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 23:47:18 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
MasterZivЛучше всё же Тогда уж Код: sql 1. разницы 0. Но мой шаблон гораздо удобнее при неопределённом количестве пар... а если не думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 12:12:40 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
MasterZiv , мне во всяком случае было бы удобнее, буде у меня возникла бы задачиа динамического построения текста запроса. В коде - и удобнее, и проще, отдельно условие, отдельно критерий, отдельно литералы сравнения, ничего не перемешано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 12:33:07 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina MasterZiv , мне во всяком случае было бы удобнее, Согласись, это далеко не самый важный критерий оценки текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:22:25 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinafolder-proУ вас под рукой нет случайно статей на манипуляцию с этим шаблоном?Да я его прямо тут от руки набросал... какие нахрен статьи ещё. Потому, кстати, и дорабатываю, в частности folder-proда и IN откуда взялось, в первом ответе было другое ) это по сути абсолютно то же самое, просто запись более читабельная. MasterZivЛучше всё же Тогда уж Код: sql 1. Но мой шаблон гораздо удобнее при неопределённом количестве пар... а если начнётся огород типа "эти две пары обязательно, из вон тех пяти пар должно быть не менее трёх, а этих двух быть не должно", то он вообще становится чертовски привлекательным.... К слову, для моего шаблона, если в таблице есть подходящий индекс (в коем поля идут в правильном порядке) - он будет использоваться. сгенерил таблицу на 11000 характеристик для 2000 товаров, ваш запрос не желает индексы использовать... подскажите как их правильно создать тогда, индексы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:47:49 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:07:37 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proсгенерил таблицу на 11000 характеристик для 2000 товаров, ваш запрос не желает индексы использовать... Ага... possible keys IS NULL - а где подходящий индекс-то? трудно использовать то, чего нет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:28:40 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
http://sqlfiddle.com/#!2/5e97c/1 Код: sql 1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ID SELECT_TYPE TABLE TYPE POSSIBLE_KEYS KEY KEY_LEN REF ROWS FILTERED EXTRA1SIMPLEjos_md_catalog_message_criterionsindexid_nm_val154100Using where; Using index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:44:39 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=191&tid=1835382]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
15ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 278ms |

| 0 / 0 |
