表A里面有A B 两个字段,其中A存放的是3个不同表的ID(3个表都有几个相同的字段),B就是用来区别此ID来自哪个表.结构如下
A  B
1  1
1  2
1  3
我现在要用一条select语句取出id存在A中的3个表的信息(取3个表相同的字段)。假如用上面的数据我想的到数据
id     Name    Price    KuCun
1      车       100000   10
1      电脑     5000     40
1      书       150      30

解决方案 »

  1.   

    请问表的ID 是数据库里的sysobjects表中的ID吗?
      

  2.   


    declare @sql varchar(8000)
    set @sql = ''
    select @sql = @sql + ' select * from '+ OBJECT_NAME(b) + 'union all '
    from (select distinct b from tablea) aa
    set @sql = substring(@sql ,1, len(@sql) - 10)
    exec (@sql)
      

  3.   

    declare @sql varchar(8000)
    set @sql = ''
    select @sql = @sql + ' select * from '+ OBJECT_NAME(b) + '  union all '
    from (select distinct b from tablea) aa
    set @sql = substring(@sql ,1, len(@sql) - 10)
    exec (@sql)
      

  4.   

    [code=SQL]declare @sql varchar(8000)
    set @sql = ''
    select @sql = @sql + ' select * from '+ OBJECT_NAME(b) + '  union all '
    from (select distinct b from tablea) aa
    set @sql = substring(@sql ,1, len(@sql) - 10)
    exec (@sql)
    [/code]刚才那个少一个空格,更正一下
      

  5.   

    测试数据没加name列,自己处理.CREATE TABLE tb_1(id INT,Price SMALLMONEY,kucun INT)
    INSERT tb_1 SELECT 1,33.44,20
      UNION ALL SELECT 2,33.22,30CREATE TABLE tb_2(id INT,Price SMALLMONEY,kucun INT)
    INSERT tb_2 SELECT 1,3.44,20
      UNION ALL SELECT 2,35.22,40CREATE TABLE tb_3(id INT,Price SMALLMONEY,kucun INT)
    INSERT tb_3 SELECT 1,83.44,22
      UNION ALL SELECT 2,31.2,10CREATE TABLE tb (A INT,B INT)
    INSERT tb SELECT 1,1 UNION ALL SELECT 1,2 UNION ALL SELECT 1,3
    GO
    SELECT base.* FROM tb a
    INNER JOIN
    (SELECT *,tbid=1 FROM tb_1
    UNION ALL
    SELECT *,tbid=2 FROM tb_2
    UNION ALL
    SELECT *,tbid=3 FROM tb_3) base /*你能将表名以序号分别在tb表的b列,那么每一个序号肯定会对应到一个表名的*/
    ON tbid=a.B AND base.id=a.A
    /*
    id price kucun tbid
    1 33.4400 20 1
    1 3.4400 20 2
    1 83.4400 22 3
    */DROP TABLE tb_1,tb_2,tb_3,tb
    GO
      

  6.   

    说的明了点就是我的购物车里面可以存放
    书,化妆品,茶
    三种商品他们都有共同的属性就是,ID号,名称,价格,库存。而我的购物车表A里面只放入id和类别,但是我显示的时候想从3个表取出数据来显示
      

  7.   

    那不用三张表啊,一张表 加个TypeID就行了啊
      

  8.   

    我再说详细点
    表A里面有A   B   两个字段,其中A存放的是3个不同表的ID(3个表都有几个相同的字段),B就是用来区别此ID来自哪个表.结构如下 
    A     B 
    1     1 
    1     2 
    1     3 书表----在A表的B字段中用1表示
    BID        书名        批发价        库存
    1          人与自然     50          100
    化妆品表----在A表的B字段中用2表示
    HID        化妆品名     批发价        库存
    1          爽肤水       250         10茶表----在A表的B字段中用3表示
    HID        茶名         批发价        库存
    1          花茶         15          5我现在想用语句查出下面的数据
    ID         商品名       批发价        库存
    1          人与自然     50          100
    1          爽肤水       250         10
    1          花茶         15          5
      

  9.   

    可以用一个表:
    1、类型表
    ID,type_name,note
    1    书       null
    2    茶名      null
    3    化妆品    null.....2、商品表
    ID ,   name ,  type_id(关连类型表的ID),  price , stock
    1    人与自然        1                  50      100
    2    爽肤水            3                  250      10
    3     花茶             2                  15       53、表A
    orderid   , merchandise_id
    1               1
    1               2
    1               3
    ----result
    select a.orderid,b.name ,  c.type,b.price,b.stock
    from  表A a,类型表 c ,商品表 b
    where a.merchandise_id = b.id and b.type_id = c.id