繁体   English   中英

SQL ACCESS(有关查询的思想和帮助)

[英]SQL ACCESS (need ideas and help about a query)

我是Access SQL的新手,我需要一些查询的帮助。 我想要的是从prefer_to_buyprefer_to_rent中找到那些更喜欢汽车(制造商和模型)的客户,而其他人都没有。

例如,如果2位顾客更喜欢Toyota Aygo,则必须不在结果表中。

客户(customer_id,姓名)

preferred_to_buy(客户ID,制造商,型号)

preferred_to_rent(客户ID,制造商,型号)

我尝试了很多方式,包括存在,我知道大约必须有2-3个子查询,但是我无法使其正常工作,有什么想法吗?

您的问题定义非常模糊,因此答案也很笼统。 您应该尝试在customer表上创建一个左外部联接,例如,使用customer_id作为prefer_to_buy字段来创建一个“ prefer_to_buy ”表,并包括: customer_id,name左表中的customer_id,namemanufacturer,model右表中的manufacturer,model 相同的逻辑适用于prefer_to_rent表:您实际上可以使用上述外部联接将这3个表组合到单个Access SQL查询中。

希望这会有所帮助。 最好的问候,在这里输入代码

这里有两个部分。 首先,您可以使用union运算符将prefer_to_buyprefer_to_rent视为单个表(可能带有附加的文字“列”以指示首选项类型)。 完成此操作后,可以使用exists运算符来确保没有其他顾客喜欢这辆车:

SELECT c.name, p.manufacturer, p.model
FROM   customer c
JOIN   (SELECT customer_id, manufacturer, model
        FROM   prefer_to_buy
        UNION 
        SELECT customer_id, manufacturer, model
        FROM   prefer_to_buy) p ON c.customer_id = p.customer_id
WHERE  NOT EXISTS (SELECT *
                   FROM   prefer_to_buy pb
                   WHERE  c.customer_id != pb.customer_id AND
                          p.manufacturer = pb.manufacturer AND
                          p.model = pb.model) AND
        NOT EXISTS (SELECT *
                   FROM   prefer_to_rent pr
                   WHERE  c.customer_id != pr.customer_id AND
                          p.manufacturer = pr.manufacturer AND
                          p.model = pr.model)

首先,您需要对两个联接执行一个,对joint_to_buy进行一次联接,对joint_to_rent进行一个联接。 接下来,您需要检查是否还有其他人想要相同的制造商和型号。 用存在做到这一点

SELECT *
FROM customer AS c 
  JOIN prefer_to_buy AS pb ON c.customer_id = pb.customer_id 
  JOIN prefer_rent AS pr ON c.customer_id = pr.customer_id 
WHERE NOT EXISTS ( SELECT 'x' FROM prefer_to_buy AS pb1 WHERE pb.manufacturer = pb1.manufacturer AND pb.model = pb1.model AND pb.customer_id <> pb1.customer_id) 
 AND NOT EXISTS ( SELECT 'x' FROM prefer_to_rent AS pr1 WHERE pb.manufacturer = pr1.manufacturer AND pb.model = pr1.model AND pb.customer_id <> pr1.customer_id) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM