2013-03-18 87 views
1

对于SQL评估,我必须执行一个查询,我需要按销售员代码的顺序列出过去一个月的汽车销售情况。 我已经创建了一条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; 

如果任何人有任何意见或知道我要去的地方错了,我将非常感激这个问题的一些援助。

这里是作为请求的一些示例数据:

  • CFS表

    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 
    
+3

欢迎来到Stack Overflow!请通过添加适当的标记(Oracle,SQL Server,MySQL等)来指定您要定位的RDBMS。可能会有利用不被普遍支持的语言或产品功能的答案。此外,通过使用特定的RDBMS标记它,您的问题可能会得到更适合回答的人的关注。 – Taryn 2013-03-18 16:00:31

回答

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

而且,使用的日期时,应通过磅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; 
+0

感谢您的回复。当我尝试不包括推销员运行SQL代码,它提示我输入订单参数BY Salesman.Salesman代码 – Alyn 2013-03-18 16:07:34

+0

@Alyn然后,你将需要'JOIN'到该表。查看我的编辑 – Taryn 2013-03-18 16:09:16

+0

当它显示时,虽然它只是一个空白列表 – Alyn 2013-03-18 16:11:30