高级访问查询

时间:2011-03-04 22:18:27

标签: ms-access

我有两张桌子。一个包含潜在客户信息及其车辆要求(车辆类型,车辆颜色)等。另一个表包含车辆列表。这包括NumberOfSeats,Max Speed,Price等数据。

我需要一个查询,列出满足潜在客户要求(车辆类型)等的车辆(来自车辆表)。

我想在查询中避免一些事情。我想通过仅指定潜在客户的ID(客户ID)来列出这些。 I.E我不想做像WHERE Cust ID = 1 AND ... AND ... AND ...

这样的事情

我想到了这一点并得出结论,最有可能需要使用JOIN或UNION。但是当我试图将JOIN语句放在一起时,我发现我必须列出JOIN ON字段的加载:

SELECT * 
FROM [Potential Customer] INNER JOIN [Vehicles] AS Matches
    ON Matches.`Number of Seats` >= [Potential Customer].`Min Seats` AND
    ON Matches.`Color` >= [Potential Customer].`Preferred Color` =  AND 
    ...  

WHERE [Potential Customer].`Cust No` = 3

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

但是你已经有几个... AND ...语句了。所以我认为这样做的好方法是:

SELECT Cars.* FROM Cars, Customer WHERE 
Customer.ID = 1 AND
Cars.Whatever >= Customer.Whatever >=  AND
...

我个人会这样做,因为它简单易懂。此外,在大约8年的边际数据库经验中,我从不费心去学习任何关于连接的事情(羞耻)。而且,BTW,这不是一个高级查询:P

答案 1 :(得分:0)

您可以通过使用这样的简单查询来获得您所追求的内容:

SELECT Customer.Id, Vehicle.Id FROM Customer, Vehicle 
WHERE Vehicle.criteria_1 >= Customer.Criteria_1 AND... AND Customer.Id = 3

这应该为您提供特定客户的Vehicle.Id(或您为车辆选择的任何其他内容)的列表。

顺便说一下,查询将如何创建? Ad-hoc代码?存储过程?