Я думал, что у меня это взломанное, но оно возвращается к множеству результатов. Я постараюсь объяснить это лучше.Максимальные значения из SQL-запроса
У меня есть таблица, в которой указан тип доставки (I.e. One Man Delivery, Two Man Delivery) для продуктов. Стоимость доставки зависит от продукта, и каждый продукт может иметь несколько типов доставки.
Если пользователь добавляет два товара в корзину, мне нужно отобразить самые дорогие варианты доставки из любого из продуктов в корзине.
EG.
Product 1
id=2
Delivery Type=One Man delivery
Cost=**£30**
id=2
Delivery Type=Two Man delivery
Cost=£40
Product 2
id=4
Delivery Type=One Man delivery
Cost=£40
id=4
Delivery Type=Two Man delivery
Cost=**£60**
The results should be;
id=4
Delivery Type=Two Man delivery
Cost=**£60**
id=2
Delivery Type=One Man delivery
Cost=**£30**
мне нужно также получить uid
таблицы. Это останавливает запрос на получение правильных результатов. Он вернет все типы доставки. Если я удалю uid
, он отобразит правильные результаты. Кажется, он останавливает группу.
<cfquery name="getDeliveryType" datasource="#application.dsn#">
SELECT txt_pdelopt_type, MAX(mon_pdelopt_actcost) AS myCost, uid_pdelopt
FROM dbo.tbl_product_deliveryopt
WHERE bit_pdelopt_active=<cfqueryparam cfsqltype="cf_sql_bit" value="yes">
AND uid_pdelopt_prodid IN (<cfqueryparam cfsqltype="cf_sql_integer" value="4,5" list="yes">)
GROUP BY txt_pdelopt_type, uid_pdelopt
ORDER BY myCost DESC
</cfquery>
Каков наилучший способ приблизиться к этому? Любая помощь приветствуется.
Я думаю, что я продал себе манекен! Если у меня есть два продукта с одинаковыми параметрами доставки и расходами, я получаю все возвращаемые типы доставки, так как ни одна из этих затрат не превышает каждого из них?
Сейчас уже поздно, и я смущаю себя, не говоря уже о вас, ребята, которые пытаются помочь!
Так что я не уверен, что я пытаюсь сделать, это добиться того, что мне нужно!
Давайте попробуем начать с самого начала;
Таблица: tbl_product_deliveryopt
UID: uid_pdelopt
Id продукта: uid_pdelopt_prodid
Тип поставки: txt_pdelopt_type
Стоимость: mon_pdelopt_actcost
Эта таблица содержит типы доставки, связанные с продуктом. Продукт uid: uid_products
.
Каждый продукт может иметь несколько типов доставки, таких как доставка одного человека, доставка двух человек.
Для каждого типа доставки могут быть разные затраты в зависимости от размера продукта.
Если в корзину добавлено два продукта, сначала необходимо найти самую дорогую стоимость доставки, а затем отобразить самую высокую стоимость, которую мы нашли вместе с другими опционами, которые разделяют uid_pdelopt_prodid
самой высокой стоимости, которую мы нашли.
EG:
Продукт 1
Del Тип: One Man
Стоимость: £ 20
ProdID: 3
Продукт 1
Del Тип: Two Man
Стоимость: £ 40
ProdID: 3
Продукт 2
Del Тип: One Man
Стоимость: £ 10
ProdID: 4
Продукт 2
Del Тип: Two Man
Стоимость: £ 20
ProdID: 4
Поскольку продукт 1 имеет максимальная плата за доставку Мне нужно отобразить стоимость доставки продукта 1.
Однако два продукта могут иметь одинаковую плату за доставку, в этом случае мне все еще нужно отображать только один набор опций, но они должны иметь одинаковые uid_pdelopt_prodid
.
Другими словами, я не могу отобразить смесь вариантов, которые они должны связывать uid_pdelopt_prodid
.
Это объясняет это лучше?
Требование не совсем ясно для меня - можете ли вы упростить свой пример? например выборки данных и желаемых результатов. Кроме того, это связано с проблемой охлаждения? – ninesided
Не могли бы вы разместить таблицу ddl? Имена столбцов являются битовыми. Неясно, какие идентификаторы относятся к жесткому кодированному списку: '4,5'. Кроме того, всегда полезно включать ваш тип базы данных с вопросами sql. – Leigh