
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.05.2014, 16:16:59
|
|||
|---|---|---|---|
|
|||
Сортировка результатов из EAV |
|||
|
#18+
Добрый вечер. Использую модель EAV. Хочу вывести результаты поиска отсортированными, но не получается этого сделать - пробовал с join - вроде результат есть, но не тот, который нужен. Итак, есть таблицы, структура которых такова: ID | ParamID | Value. Такие таблиц несколько (по типам - строковые, целые, флотовые, диапазоны...). Хочу вывести на экран результат поиска (выбираются данные, лежащие в другой таблице - название, ссылка, картинка...), который отсортирован по ParamID=1 например. Пусть я узнал, в какой именно таблице лежит данный параметр (MyTable). Теперь как отсортировать по его полю Value? Ведь есть сущности (товары) у которых вообще нет данного параметра (но находятся в одной категории). Я честно говоря не знают как такое делается в CMS, но предполагаю, что нужно сделать join таблицы, в которой лежит ParamID=1 - если у данной сущности есть такой параметр - вписать его, если нет - вписать NULL и по результату отсортировать. Тогда как сделать правильный джойн, чтобы в выборки был именно ParamID=1, а не любые другие параметры из таблицы MyTable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2014, 16:30:24
|
|||
|---|---|---|---|
Сортировка результатов из EAV |
|||
|
#18+
Насколько я понял, вам нужен LEFT JOIN, в условие соединения которого включено условие ParamID=1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2014, 16:31:09
|
|||
|---|---|---|---|
|
|||
Сортировка результатов из EAV |
|||
|
#18+
xmlns, EAV - это Esset Anti Virus?! PS есть общее правило хорошего тона - использовать только общепринятые официальные абривиатуры. сокращения в контексте - например авторы хороших технических книг обычно вводят пару тройку подобных абривиатур, вплоть до сокращённого названия часто используемой пользовательской функции. PS для других кто сразу не вспомнит что это Entity-Atribute-Value model модель когда для сущностей набор(число и какие именно) атрибутов плавающий, и по сути имеем таблицы атрибуты(вес, рост, ....,что-тоещо) и связи таблица(сущность,атрибут,значение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2014, 16:33:09
|
|||
|---|---|---|---|
|
|||
Сортировка результатов из EAV |
|||
|
#18+
miksoftНасколько я понял, вам нужен LEFT JOIN, в условие соединения которого включено условие ParamID=1. если не включить, будет тоже самое(вплане оптимизатор мускла выкупит тему) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2014, 16:37:41
|
|||
|---|---|---|---|
Сортировка результатов из EAV |
|||
|
#18+
alex564657498765453miksoftНасколько я понял, вам нужен LEFT JOIN, в условие соединения которого включено условие ParamID=1. если не включить, будет тоже самое(вплане оптимизатор мускла выкупит тему)Если не включить, то записи в результате замножатся, т.к. у товаров, как правило, более одного параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2014, 16:39:14
|
|||
|---|---|---|---|
|
|||
Сортировка результатов из EAV |
|||
|
#18+
alex564657498765453miksoftНасколько я понял, вам нужен LEFT JOIN, в условие соединения которого включено условие ParamID=1. если не включить, будет тоже самое(вплане оптимизатор мускла выкупит тему) страно, счас проверил, если всетаки парамайди оставить в секции веар, то ехплейн выдаёт оптимальный план найти сначала запись по этому ключу, а потом уже из другой таблицы связанные если же сразу в условие соединения, то что первым что последним ставить - одну таблицу всю просматривает ища нужную запись, а потом аналогично - из второй только нужные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1834798]: |
0ms |
get settings: |
8ms |
get forum list: |
31ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
10ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 389ms |

| 0 / 0 |
