Получение самых высоких значений из базы данных - PullRequest
0 голосов
/ 11 февраля 2012

Я использую следующий запрос для извлечения типов доставки из базы данных SQL, запрос получает все типы доставки, связанные со списком продуктов в корзине. Запрос может вернуть минимум два типа доставки для одного товара или еще больше для нескольких товаров в корзине. Однако мне просто нужно отобразить две самые дорогие стоимости доставки.

например. Продукт 1 имеет стандартную доставку £ 9,99 И 2 человека доставка £ 29,99 Продукт 2 имеет стандартную доставку £ 18,95 и доставку 2 человека £ 39,99

Мне нужно отобразить на экране типы доставки для продукта 2. Могу ли я использовать функцию max или она будет возвращать только самую высокую цену доставки?

Используемый запрос:

<cfquery name="getDeliveryType" datasource="#application.dsn#">
SELECT 
  uid_pdelopt,
  txt_pdelopt_type,
  mon_pdelopt_cost,
  uid_pdelopt_prodid,
  txt_pdelopt_detail,
  bit_pdelopt_active,
  bit_pdelopt_selected,
  uid_pdelopt_webid,
  uid_pdelopt_typeid,
  mon_pdelopt_actcost
    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="#arguments.uid_pdelopt_prodid#" list="yes">)
</cfquery> 

Любые указатели приветствуются.

Jason

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Вы можете заказать по стоимости DESC и ограничить результаты до 2

<cfquery name="getDeliveryType" datasource="#application.dsn#">
SELECT TOP 2
  uid_pdelopt,
  txt_pdelopt_type,
  mon_pdelopt_cost,
  uid_pdelopt_prodid,
  txt_pdelopt_detail,
  bit_pdelopt_active,
  bit_pdelopt_selected,
  uid_pdelopt_webid,
  uid_pdelopt_typeid,
  mon_pdelopt_actcost
    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="#arguments.uid_pdelopt_prodid#" list="yes">)

    ORDER BY mon_pdelopt_cost DESC
</cfquery> 
0 голосов
/ 11 февраля 2012

Давайте попробуем это, чтобы увидеть, работает ли он:

SELECT TOP 2
 txt_pdelopt_type, MAX(mon_pdelopt_actcost) AS myCost, OTHER_FIELD

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="5,49" list="yes">) 

GROUP BY uid_pdelopt_prodid, txt_pdelopt_type, OTHER_FIELD

ORDER BY myCost DESC

Измените OTHER_FIELD другими возможными полями, которые могут вам понадобиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...