2014-08-27 119 views
0

我在用外键编写Access中的SQL查询时遇到问题。有两个表格,'顾客'(ID,姓名,姓氏)和'订单'(ID,客户,日期,卷)。 ID字段是主要的,并且Orders.Customer是链接到Customers.ID的外键,所以客户可以有很多订单或没有订单。带循环的SQL查询

我的目标是根据许多标准对客户进行搜索,其中之一是如果客户至少有一个订单的数量高于某一数量。我尝试加入SELECT DISTINCT,但它仍然给我重复的结果,另外如果查询没有使用上述条件,我必须为每个客户创建一个空订单,而无需订单。

有没有人有这个想法?也许有关于外键或2个单独查询的特殊说明?

+0

你想对你的结果是有关客户或订单? – Logar 2014-08-27 10:25:41

+0

关于客户,我刚刚编辑了这个问题,谢谢 – BlackDog 2014-08-27 10:30:02

回答

1

根据您所提供的信息,我只能给你暗示什么,我认为你做的/理解错了:

  • SELECT DISTINCT不会选择一个独特的记录,而不是唯一,所以如果你的语句选择了所有的字段(*),那么distinct就不会对你有太大的帮助。
  • 我的猜测是,你必须为每个客户建立一个空的顺序,因为你使用INNER JOIN,尝试LEFT OUTER JOIN代替

例如:

SELECT DISTINCT Customers.* 
FROM Customers 
LEFT OUTER JOIN Orders 
    ON (Orders.Customer = Customers.id) 
WHERE Volume > put_your_value 
+0

是的,我首先使用了内部连接。我认为截然不同,因为连接表中的记录具有不同的顺序,但我仍然希望从“客户”表获得不同的记录。这些仅仅是示例表格,我正在工作的表格大约有50列,我不知道有关'

。*'的事情:) – BlackDog2014-08-27 10:42:14

+0

尝试使用客户。*正如我在回答中显示的那样 – Logar 2014-08-27 10:43:07

+0

完成它,它似乎做的伎俩谢谢你! – BlackDog 2014-08-27 10:47:58