我一直想让它工作一段时间。我有3张桌子。第一个表包含客户的销售,其中包括CustomerID,DateOfSales(始终具有该月的第一个)。第二个表具有CustomerName,CustomerID。第三个表有哪些客户购买哪些产品线。它们由CustomerID,ProductID存储。
我希望获得一个列表(希望从一个SQL中获得),其中列出的所有客户都是从Sales中购买某个ProductID和maxDate。如果有该客户的销售,我可以获得所有这些。如果没有找到销售,我如何获得从Sales购买特定ProductID和maxDate的所有客户或NULL?
SalesList |CustomerList|WhoBuysWhat
----------|------------|-----------
maxDate |CustomerID |CustomerID
CustomerID| |ProductID=17
这和我一样接近。它获得所有最大日期,但仅限于有销售。如果还没有记录销售,我想要CustomerID和maxDate的NULL。
SELECT WhoBuysWhat.CustomerID, CustomerList.CustomerName,
Max(SalesList.MonthYear) AS MaxOfMonthYear FROM (CustomerList INNER
JOIN SalesList ON CustomerList.CustomerID = SalesList.CustomerID) INNER
JOIN WhoBuysWhat ON CustomerList.CustomerID = WhoBuysWhat.CustomerID
WHERE (((SalesList.ProductID)=17)) GROUP BY WhoBuysWhat.CustomerID,
CustomerList.CustomerName;
是否可以或者我需要使用多个SQL语句?我知道我们应该得到比Access 2002更新的东西,但这就是他们所拥有的。
答案 0 :(得分:1)
您需要LEFT JOIN
s:
SELECT cl.CustomerID, cl.CustomerName,
Max(sl.MonthYear) AS MaxOfMonthYear
FROM (CustomerList as cl LEFT JOIN
(SELECT sl.*
FROM SalesList sl
WHERE sl.ProductID = 17
) as sl
ON cl.CustomerID = sl.CustomerID
) LEFT JOIN
WhoBuysWhat wbw
ON cl.CustomerID = wbw.CustomerID
GROUP BY cl.CustomerID, cl.CustomerName;