簡體   English   中英

來自查詢的MYSQL不同結果

[英]MYSQL Distinct results from a query

我正在嘗試使用MYSQL查詢獲得DISTINCT結果:

    $sql = "SELECT un.*, co.order_product_quantity AS product_num, cu.first_name, cu.surname, cp.product_name, cp.product_thumbnail AS prod_img, co.order_goods_cost, co.order_delivery_cost, co.order_status as status
        FROM (
            SELECT DISTINCT order_unique_id AS o_id, order_date
            FROM cbs_orders
            GROUP BY order_unique_id
        ) un
            INNER JOIN cbs_orders co ON co.order_unique_id = un.o_id
            INNER JOIN cbs_users cu ON cu.id = co.order_user_id
            INNER JOIN cbs_products cp ON cp.product_id = co.order_product_id
        ORDER BY un.order_date DESC LIMIT $start_from, $num_rec_per_page ";

我正在尋找從查詢中獲取DISTINCT order_unique_id的信息,我最初從未寫過該查詢,我認為添加“ SELECT DISTINCT order_unique_id”將解決此問題,但仍會帶回重復的ID。

為任何幫助人士歡呼

格雷厄姆

您想正確利用GROUP BY 在這種情況下, DISTINCT不會為您提供幫助。 另外,我很確定不需要子選擇。

嘗試這個

 $sql = "SELECT un.order_unique_id AS o_id, un.order_date,
 co.order_product_quantity AS product_num, 
 cu.first_name, cu.surname, cp.product_name, 
 cp.product_thumbnail AS prod_img, co.order_goods_cost, 
 co.order_delivery_cost, co.order_status as status
   FROM cbs_orders AS un
   INNER JOIN cbs_orders co ON co.order_unique_id = un.o_id
   INNER JOIN cbs_users cu ON cu.id = co.order_user_id
   INNER JOIN cbs_products cp ON cp.product_id = co.order_product_id
     GROUP BY un.order_unique_id
     ORDER BY un.order_date DESC 
     LIMIT $start_from, $num_rec_per_page ";

這可能會產生奇怪的結果,因為您沒有將聚合函數應用於其他列。 您可能需要使用它們才能獲得理想的結果。

讓我冒昧地猜測,您只希望記錄最近的訂單。 如果是這種情況,那么您可以通過適當地匯總數據來做您想做的事情:

SELECT un.*, co.order_product_quantity AS product_num, cu.first_name,
       cu.surname, cp.product_name, cp.product_thumbnail AS prod_img,   
       co.order_goods_cost, co.order_delivery_cost, co.order_status as status
FROM (SELECT order_unique_id AS o_id, max(order_date) as order_date
      FROM cbs_orders
      GROUP BY order_unique_id
     ) un INNER JOIN
     cbs_orders co
     ON co.order_unique_id = un.o_id INNER JOIN
     cbs_users cu
     ON cu.id = co.order_user_id INNER JOIN
     cbs_products cp
     ON cp.product_id = co.order_product_id
ORDER BY un.order_date DESC
LIMIT $start_from, $num_rec_per_page;

如果每個訂單只需要一行,那么您需要弄清楚如何處理產品。 我認為,這種解釋與您當前的問題有很大不同,您應該提出另一個問題,提供示例數據和所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM