2011-03-04 69 views
0

我有两个表。一个包含潜在客户信息及其车辆要求(车辆类型,车辆颜色)等。另一个表格包含车辆列表。这包括如NumberOfSeats,最大速度,价格等数据高级访问查询

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

那里有几个我希望在查询中避免的事情。我想通过仅指定潜在客户的ID(客户ID)列出这些信息。 IE我不想做任何事情,如WHERE Cust ID = 1 AND ... AND ... AND ...

我想到了这一点,并得出结论认为JOIN或UNION很可能需要使用。但是,当我试图把一个JOIN语句在一起,我发现,我不得不列出的负荷JOIN上的字段:

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 

有没有更好的方式来做到这一点?

+0

为什么你不想使用WHERE? – tkm256 2011-03-04 22:31:26

+0

如果您开始为您的问题标记选定的答案,它会有所帮助。更多的人会这样回答。 – Shade 2011-03-05 13:42:30

回答

0

但是您已经有几个... AND ...陈述。所以我认为这样做的好方法是:

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

我个人会这样做,因为它很容易理解。另外,对于大约8年的边缘数据库经验,我从来没有想过要学习任何关于连接(羞愧)的事情。而且,顺便说一句,这是不是这样的高级查询:P

0

您可以得到你所追求的,通过使用这样一个简单的查询:

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

这应该给你的车辆的清单.Id(或其他您选择的车辆)为特定客户。

顺便说一句,如何创建查询?在代码中特设?存储过程?