我需要从几个表中构建一个列表,而我似乎无法弄清楚如何构建它。
我有一张带自行车模型和产品表的桌子:
自行车
modelno, franchise, description, year,profile
"1","kawasaki","ninja","2009","1-2009"
"2","honda","cbr600","2006","2-2006"
产品
productid, category, profile,
"1","carburettor",",1-2009,",
"2","Generic Gear Lever",",1-2009,2-2006,"
配置文件字段包含该部件适合的所有车辆的逗号分隔列表。
我可以使用以下方法获取一张车辆列表:
SELECT
(SELECT Franchise + ' ' +
description + ' ' +
year as model from bikes where profile = @model + '-' +
@year
)
as model, catalogueref, tier2
FROM products
WHERE profile LIKE '%,' + @model + '-' + @year + ',%'`
给了我:
bike, lever, sprocket, etc...
kawasaki 250 2009, 123456,234567, etc...
但是,我需要在大约8000个型号上执行此功能,而不是必须单独执行每个模型。有什么方法可以让它列出一份简介吗?
答案 0 :(得分:1)
我的要求并不完全清楚,因为您没有准确说明所需结果集中记录末尾的数字代表什么。
但是,如果要在数据库中的所有产品上执行示例SELECT,则应该能够加入这两个表。
SELECT B.Franchise + ' ' + B.description + ' ' + B.year AS model,
P.catalogueref, P.tier2
FROM bikes B INNER JOIN products P
ON P.profile LIKE '%,' + B.modelno + '-' + B.year + ',%'`
如果要对某些配置文件进行过滤,可以添加(例如)
WHERE B.Profile IN (. . .)
答案 1 :(得分:0)
我看看你是否可以在两个表的每个列中投影实际数据的视图。获得视图后,您可以编写连接查询。它不会很快,但它会将你的问题分解成可管理的块。