【发布时间】:2013-06-13 19:15:22
【问题描述】:
我实际上在 virturt mart 表上有三张表,一张是 orders,另一张是 item,一张是 order_user_info 要获取用户名,我需要加入 order_user_info 表
但是当我加入它时,结果信息显示双倍,下面我提到了查询和结果,请指导如何避免双倍结果
*为了加入我在下面提到的查询中使用的名字 *
LEFT JOIN `urbanite_virtuemart_order_userinfos` 作为 Uinfo ON Uinfo.virtuemart_order_id=i.virtuemart_order_id*完成查询*
SELECT SQL_CALC_FOUND_ROWS o.created_on AS 间隔,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 LEFT JOIN `urbanite_virtuemart_order_userinfos` 作为 Uinfo ON Uinfo.virtuemart_order_id=i.virtuemart_order_id AND Uinfo.created_on = i.created_on AND Uinfo.virtuemart_user_id = o.virtuemart_user_id 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" 按间隔分组 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 |法廷·博哈里 | 43940624 | 200.00000 | 200.00000 | 1 | 4
在不加入名字的情况下看到它显示 product_quantity = 2 但是当我加入时它显示值加倍,我尝试了不同但不能这样,因为它每次都显示产品数量 = 1
需要救援!
【问题讨论】:
-
请谨慎使用粗体字体...
-
如果您可以在sqlfiddle.com 上提供带有数据库架构的 sqlfiddle 会有所帮助
-
如果您有一个额外的名字连接,您可以删除它并使用子选择来代替。类似于 select a.*, (select b.name from table_b b where b.refid = a.id) as name from table_a a
-
感谢@RubenVerschueren,您的评论对我有帮助
-
也感谢@MicKri 现在我在 sqlfiddle 上创建方案时发现了这个问题,感谢您的帮助。
标签: mysql sql joomla2.5 virtuemart