1

对于 SQL 评估,我必须执行一个查询,其中我需要列出按销售员代码排序的过去一个月的汽车销售情况。我创建了一条 SQL 语句。但是,当我运行它时,除了我在查询中包含的列名之外,它什么都没有列出。我使用的 SQL 代码如下:

SELECT CarForSale.SalesmanCode, 
  Salesman.SalesmanName, 
  Customer.CustomerCode, 
  Customer.CustomerName, 
  Customer.CustomerAddress
FROM 
(
  Centre 
  INNER JOIN Customer 
    ON Centre.CentreCode = Customer.CentreCode
) 
INNER JOIN CarForSale 
  ON (Customer.CustomerCode = CarForSale.CustomerCode) 
  AND (Centre.CentreCode = CarForSale.CentreCode), Salesman
WHERE CarForSale.CFSSoldDate BETWEEN CVDATE('01/02/2013') AND  CVDATE('01/03/2013')
ORDER BY Salesman.SalesmanCode;

如果有人有任何反馈或知道我哪里出错了,我将非常感谢有关此问题的一些帮助。

以下是要求的一些示例数据:

  • 粮安委表

     CFSCode CFSMake CFSModel CFSSellingPrice 
     000001 Mercedes  W168         45000             
    
     CFSSoldDate CentreCode SalesmanCode CustomerCode
     01/03/2013   00000001   0000000001 00000001
    
  • 推销员表

    SalesmanCode SalesmanName SalemanCommThisYear SalesmanStatus CentreCode
    0000000001    Liam Jones       2250         senior        00000001
    
  • 客户表

    CustomerCode    CustomerName    CustomerAddress   CentreCode    CustomerStatus
    00000001    Gina Smith       1, The Lake,       00000002         good
                                 Merthyr Tydfil
    
4

1 回答 1

2

在您当前的查询中,您有一些不寻常的语法:

AND (Centre.CentreCode = CarForSale.CentreCode), Salesman -- what's this

我不确定, Salesman应该做什么。但是,如果您尝试JOINSalesman桌子上,那么您的查询将是:

SELECT CarForSale.SalesmanCode, 
  Salesman.SalesmanName, 
  Customer.CustomerCode, 
  Customer.CustomerName, 
  Customer.CustomerAddress
FROM ((Centre 
INNER JOIN Customer 
  ON Centre.CentreCode = Customer.CentreCode) 
INNER JOIN CarForSale 
  ON (Customer.CustomerCode = CarForSale.CustomerCode) 
  AND (Centre.CentreCode = CarForSale.CentreCode)))
INNER JOIN Salesman
  ON CarForSale.SalesmanCode = Salesman.SalesmanCode
WHERE CarForSale.CFSSoldDate BETWEEN #01/02/2013# AND #01/03/2013#
ORDER BY Salesman.SalesmanCode;

同样在 MS Access 中,使用日期时,它们应该被 pound sigs 包围#。您的查询应该是:

SELECT CarForSale.SalesmanCode, 
  Salesman.SalesmanName, 
  Customer.CustomerCode, 
  Customer.CustomerName, 
  Customer.CustomerAddress
FROM ((Centre 
INNER JOIN Customer 
  ON Centre.CentreCode = Customer.CentreCode) 
INNER JOIN CarForSale 
  ON (Customer.CustomerCode = CarForSale.CustomerCode) 
  AND (Centre.CentreCode = CarForSale.CentreCode)))
INNER JOIN Salesman
  ON CarForSale.SalesmanCode = Salesman.SalesmanCode
WHERE CarForSale.CFSSoldDate BETWEEN #01/02/2013# AND #01/03/2013#
ORDER BY Salesman.SalesmanCode;

编辑#1,我不确定您为什么要加入Centre表格,因为您没有将它用于任何事情。我刚刚使用您的示例数据在 MS Access 中运行了以下查询并得到了结果:

SELECT CarForSale.SalesmanCode, 
  Salesman.SalesmanName, 
  Customer.CustomerCode, 
  Customer.CustomerName, 
  Customer.CustomerAddress
FROM (Customer 
INNER JOIN CarForSale 
  ON Customer.CustomerCode = CarForSale.CustomerCode)
INNER JOIN Salesman
  ON CarForSale.SalesmanCode = Salesman.SalesmanCode
WHERE CarForSale.CFSSoldDate BETWEEN #01/02/2013# AND #01/03/2013#
ORDER BY Salesman.SalesmanCode;
于 2013-03-18T16:05:03.637 回答