Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Добрый день. Имеется следующий запрос: [src]SELECT `e`.*, COUNT(soit.*) AS `total` FROM `catalog_category_entity` AS `e` LEFT JOIN `sales_flat_order_item` AS `soit` ON soit.product_id in ( SELECT product_id from catalog_category_product where category_id=e.entity_id ) LEFT JOIN `webxmore_wbxquestions_item_info` AS `woiit` ON woiit.attribute = 1 and woiit.owner in (SELECT item_id from sales_flat_order_item where product_id in ( select product_id from catalog_category_product where category_id=e.entity_id ) ) GROUP BY `e`.`entity_id` Проблема в том, что выделенный курсивом подзапрос вызывается 2 раза и из-за этого COUNT(soit.*) возводится в квадрат (вместо 13, например, возвращает 169). Буду благодерен за подсказку, как можно переписать этот запрос (внятный вопрос гуглу я не смог сформулировать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 16:18 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Приведите: - скрипты создания таблиц (SHOW CREATE TABLE в теге SRC) - пример наполнения таблиц (в теге Table, разделитель запятая) - сформулируйте полно и точно исходную задачу - покажите (в теге Table) желаемый результат (именно на показанном примере наполнения) с объяснением, почему именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 07:19 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
kryuchПроблема в том, что выделенный курсивом подзапрос вызывается 2 раза проблема не в этом. проблема в том, что таблицы связаны не один-к-одному, а один-ко-многим. Поэтому изменить логику запроса - сначала считать агрегаты и только после этого делать джойн. Либо, заменить left join-ы на IN/EXISTS-подзапросы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 08:18 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Щукина Анна , да связь таблиц по коррелированному подзапросу - вообще веселуха. Думаю, там логика кривая, и запрос вообще надо с нуля перерисовывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 08:50 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Структура такая: 1) Категории Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 2) Отношение товаров к категория Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 3) Заказы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 4) Свойства заказов (связана с заказами полем owner - item_id из таблицы заказов) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. В этом запросе мы хотим получить все категории и по каждой количество заказов обладающих определенным свойством (attribute = 1), + общее количество заказов. Про агрегаты - тоже думал. Но по сути надо делать функцию которая возвращает массив ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 11:53 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Навскидку как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 12:41 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Возможно, последнюю связь придётся делать LEFT JOIN... вдруг у товара нет ни одной категории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 12:42 |
|
||
|
Проблема с подзапросом
|
|||
|---|---|---|---|
|
#18+
Блин... GROUP BY забыл. Сорри. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39653914&tid=1829819]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 369ms |

| 0 / 0 |
