在sql中构建列表

时间:2010-12-15 11:50:03

标签: sql list

我需要从几个表中构建一个列表,而我似乎无法弄清楚如何构建它。

我有一张带自行车模型和产品表的桌子:

自行车

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个型号上执行此功能,而不是必须单独执行每个模型。有什么方法可以让它列出一份简介吗?

2 个答案:

答案 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)

我看看你是否可以在两个表的每个列中投影实际数据的视图。获得视图后,您可以编写连接查询。它不会很快,但它会将你的问题分解成可管理的块。