我需要知道是否有更好的方法来运行以下查询。它正在返回错误的COUNT号码,因为要获取客户的地址,我必须加入customers_addresses表,并且某些客户拥有多个地址。因此,COUNT正乘以用户拥有的地址数量。我不希望它这样做,但我仍然想获取地址信息。有谁知道我该怎么做?SQL COUNT乘以连接表中的条目
SELECT
Customers.UserID,
Customers.FirstName,
Customers.LastName,
Customers_Addresses.Address1,
Customers_Addresses.City,
Customers_Addresses.Region,
TotalOrders
FROM
(SELECT
Customers.UserID,
Customers.FirstName,
Customers.LastName,
Customers_Addresses.Address1,
Customers_Addresses.City,
Customers_Addresses.Region,
Customers.GroupID,
COUNT(Orders.OrderID) AS TotalOrders,
SUM(Orders.TotalCost) AS TotalSalesOfAllTime
FROM
Orders
INNER JOIN Customers ON Customers.UserID = Orders.UserID
INNER JOIN Groups ON Customers.GroupID = Groups.GroupID
INNER JOIN Customers_Addresses ON Customers.UserID = Customers_Addresses.UserID
GROUP BY Orders.UserID
) Customers
INNER JOIN Customers_Addresses ON Customers.UserID = Customers_Addresses.UserID
WHERE
1 = 1
AND Customers.UserID BETWEEN 2570 AND 2570
通过格式化您的问题中的查询开始。 – 2014-09-04 14:10:50
您是否考虑过MySQL的[GROUP_CONCAT](http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat)函数? – 2014-09-04 14:44:41