0

virturt mart テーブルに実際に 3 つのテーブルがあります。1 つは注文、もう 1 つはアイテム、もう 1 つは order_user_info で、ユーザー名を取得するためにorder_user_infoテーブルに参加する必要があります。

しかし、私が参加すると、結果情報が二重に表示されます。以下にクエリと結果について言及しましたが、二重の結果を回避する方法を教えてください

* JOIN FIRST NAME については、以下のクエリを使用しています *

LEFT JOIN `urbanite_virtuemart_order_userinfos` as Uinfo ON Uinfo.virtuemart_order_id=i.virtuemart_order_id

*完全なクエリ *

SELECT SQL_CALC_FOUND_ROWS o.created_on AS interval, CAST( i.`created_on` AS DATE ) AS created_on, Uinfo.`first_name`, o.`order_number`, SUM(DISTINCT i.product_item_price * product_quantity) as order_subtotal_netto, SUM(DISTINCT i. product_subtotal_with_tax) を order_subtotal_brutto として、COUNT(DISTINCT i.virtuemart_order_id) を count_order_id として、SUM(i.product_quantity) を product_quantity として FROM `urbanite_virtuemart_order_items` を i として

LEFT JOIN `urbanite_virtuemart_orders` as o ON o.virtuemart_order_id=i.virtuemart_order_id
Uinfo.virtuemart_order_id=i.virtuemart_order_id AND Uinfo.created_on = i.created_on AND Uinfo.virtuemart_user_id = o.virtuemart_user_id の Uinfo として LEFT JOIN `urbanite_virtuemart_order_userinfos`
WHERE (`i`.`order_status` = "S") AND i.virtuemart_vendor_id = "63" AND DATE( o.created_on ) BETWEEN "2013-06-01 05:00:00" AND "2013-06-30 05 :00:00"

GROUP BY 間隔
ORDER BY created_on DESC LIMIT 0、400

結果は以下のように参加せずに得ています

intervals | Created_on | order_no | order_subtotalnetto | order_subtotalbruto | count_order_id | product_quantity

2013-06-12 09:47:16 |2013-06-12 | 43940624 | 200.00000 | 200.00000 | 1 | 2

結果は、以下のように名の結合で得られます

intervals | Created_on | order_no | f_name | order_subtotalnetto | order_subtotalbruto | count_order_id | product_quantity

2013-06-12 09:47:16 |2013-06-12 | Fatin Bokhari | 43940624 | 200.00000 | 200.00000 | 1 | 4

名の結合なしで見ると、product_quantity = 2が表示されますが、結合すると値が2倍になり、個別に試しましたが、毎回製品数量= 1が表示されるため、このようには進みません

救助が必要です!

4

1 に答える 1

0

ああ、実際にはurbanite_virtuemart_order_userinfosテーブルに行が2回来るので、where句を使用して動作します

WHERE (`i`.`order_status` = "S") AND i.virtuemart_vendor_id = "63" AND DATE( o.created_on ) BETWEEN "2013-06-01 05:00:00" AND "2013-06-30 05 :00:00" AND Uinfo.`address_type` = 'BT'
于 2013-06-14T13:08:35.470 に答える