我有两张桌子。一个包含潜在客户信息及其车辆要求(车辆类型,车辆颜色)等。另一个表包含车辆列表。这包括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
有更好的方法吗?
答案 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代码?存储过程?