Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
Wontar
- Сообщения: 21
- Зарегистрирован: 08 фев 2006, 16:53
Сообщение
Wontar » 10 фев 2006, 17:26
Вообщем есть таблица "заказов", "пакетов", и "размеров".
заказы 1 - * пакеты
заказы 1 - * размеры.
У заказов PK = Code. У пакетов и размеров FK (ordercode = orders.Code)
Нужно как-то вытащить данные по заказу + кол-во пакетов в нем и суммы кол-ва единиц размеров.
Вообщем я попробовал собрать но он пишет что неправильный Group By.
Код: Выделить всё
SELECT
ORDERS.CODE,
ORDERS.DESCRIPTION,
ORDERS.MODEL,
ORDERS.SEASON,
ORDERS.PRODSTART,
ORDERS.PRODEND,
ORDERS.CDATETIME,
COUNT(BUNDLES.ID),
SUM(SIZEENTRIES.quantity)
FROM
ORDERS,BUNDLES,SIZEENTRIES
Where
(ORDERS.CODE = :code)
AND (BUNDLES.ORDERCODE = ORDERS.CODE)
AND (SIZEENTRIES.ORDERCODE = ORDERS.CODE)
GROUP BY
ORDERS.CODE
Подскажите как подправить.
Сенкс.
-
Gage
- Сообщения: 18
- Зарегистрирован: 26 ноя 2005, 20:17
Сообщение
Gage » 11 фев 2006, 10:55
Поля
ORDERS.DESCRIPTION,
ORDERS.MODEL,
ORDERS.SEASON,
ORDERS.PRODSTART,
ORDERS.PRODEND,
ORDERS.CDATETIME
либо должны быть указаны в GROUP BY,
либо к каждому из них нужно применить одну из функций - sum, max, min, avg
-
Wontar
- Сообщения: 21
- Зарегистрирован: 08 фев 2006, 16:53
Сообщение
Wontar » 11 фев 2006, 17:03
Все бы ничего, но вот только такой запрос ничего не восзвращает, когда должен был бы.
Код: Выделить всё
SELECT
ORDERS.CODE,
ORDERS.DESCRIPTION,
ORDERS.MODEL,
ORDERS.SEASON,
ORDERS.PRODSTART,
ORDERS.PRODEND,
ORDERS.CDATETIME,
COUNT(BUNDLES.ID),
SUM(SIZEENTRIES.quantity)
FROM
ORDERS,BUNDLES,SIZEENTRIES
Where
(ORDERS.CODE = :CODE) AND (BUNDLES.ORDERCODE = :CODE) AND (SIZEENTRIES.ORDERCODE = :CODE)
GROUP BY
ORDERS.CODE,
ORDERS.DESCRIPTION,
ORDERS.MODEL,
ORDERS.SEASON,
ORDERS.PRODSTART,
ORDERS.PRODEND,
ORDERS.CDATETIME
Не подскажете в чем проблемка ?
-
Gage
- Сообщения: 18
- Зарегистрирован: 26 ноя 2005, 20:17
Сообщение
Gage » 12 фев 2006, 20:48
Where
(ORDERS.CODE = :CODE) AND (BUNDLES.ORDERCODE = :CODE) AND (SIZEENTRIES.ORDERCODE = :CODE)
Параметр :CODE - это одно и тоже чило для всех равенств?
-
Wontar
- Сообщения: 21
- Зарегистрирован: 08 фев 2006, 16:53
Сообщение
Wontar » 12 фев 2006, 22:06
Да, это одно и тоже. По идее должен указывать на код заказа.
Я также пробовал конструкцию
Код: Выделить всё
Where
(ORDERS.CODE = :CODE) AND (BUNDLES.ORDERCODE = ORDERS.CODE) AND (SIZEENTRIES.ORDERCODE = ORDERS.CODE)
но она тоже ничего не дает.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 13 фев 2006, 01:19
начни без group by и агрегата. с where, с константой вместо параметра. Возвращает? посмотри на данные, попробуй сгруппировать. и т.д. Это твои данные, поэтому тебе лучше знать, "возвращает или нет".
-
Wontar
- Сообщения: 21
- Зарегистрирован: 08 фев 2006, 16:53
Сообщение
Wontar » 13 фев 2006, 09:18
Без агрегатов и group by работает хорошо.
Поэтому и странно.