日期:2014-05-18  浏览次数:20471 次

SQL查两个表中的数据 请高手指点
表1   产品品牌表
        品牌代码         品牌名称
            1001                 HP                      
            1002                 DELL
            1003                 三星
            1004                 SONY
            1005                 苹果
表2   产品型号表
        型号代码         对应品牌代码
        s10000             1001,1003,1005
        s10001             1001,1002,1004
        s10002             1003,1004,1005
        s10003             1001
        s10004             1001,1005
        s10005             1002,1003,1005

现在想查出如下数据怎么写SQL语句啊?

    产品品牌名称           产品型号
      HP                             s10000
      HP                             s10001
      HP                             s10003
      HP                             s10004
也就是所有HP品牌下的数据     请问这个语句应该怎么写   谢谢各位

------解决方案--------------------
Select a.品牌名称,b.型号代码
from 产品品牌表 as a ,产品型号表 as b
where a.品牌名称= 'HP ' and a.品牌代码 in (b.对应品牌代码)
------解决方案--------------------
use pubs;
--表1 产品品牌表
declare @t1 table(品牌代码 varchar(4),品牌名称 varchar(20))
insert into @t1
select '1001 ', 'HP '
union select '1002 ', 'DELL '
union select '1003 ', '三星 '
union select '1004 ', 'SONY '
union select '1005 ', '苹果 '
select * from @t1

--表2 产品型号表
declare @t2 table(型号代码 varchar(20),对应品牌代码 varchar(800))
insert into @t2
select 's10000 ', '1001,1003,1005 '
union select 's10001 ', '1001,1002,1004 '
union select 's10002 ', '1003,1004,1005 '
union select 's10003 ', '1001 '
union select 's10004 ', '1001,1005 '
union select 's10005 ', '1002,1003,1005 '
select * from @t2;

select 品牌名称,型号代码 from @t1 t1,@t2 t2 where charindex(t1.品牌代码,t2.对应品牌代码)> 0 and 品牌名称= 'HP ';
------解决方案--------------------
Select
A.品牌名称,
B.型号代码 As 产品型号
From
产品品牌表 A
Inner Join
产品型号表 B
On B.对应品牌代码 Like '% ' + A.品牌代码 + '% '
Where A.品牌名称 = 'HP '