表一  flag 字段
表二  flag=1
表三  flag=2
表四  flag=3
我想用一条语句获取几个字段
有几个字段是在表二、表三、表四中的一个,
而具体的关联表要根据flag字段来判断是关联到那个具体的表这样要怎么写sql语句呢

解决方案 »

  1.   

    贴记录及正确结果出来看看
    应该不行,用字符串累加得到SQL语句
      

  2.   

    就是我想获取一些字段,这些字段在表二、表三、表四中
    然后我可以根据表一中的flag字段知道是具体是要关联那张表,然后从这张表中获取字段
    如果flag=1,那我需要的字段则要从表二中得到
    依次类推
      

  3.   

    猜一下了,select a.*,b.*
    from 表一 a , (
    select 1 as flag,* from 表二 
    union all
    select 2 as flag,* from 表三 
    union all
    select 3 as flag,* from 表四 
    ) b
    where a.flag=b.flag
      

  4.   

    那不行,估计要用游标,用字符串累加得到SQL语句
      

  5.   

    没试验过,只给个思路
    select case 
           when flag=1 then 表1.字段
            when flag=2 then 表2.字段
            when flag=3 then 表3.字段
            when flag=4 then 表4.字段
            ELSE 表N.字段
            END AS 字段
    FROM 表 
           LEFT JOIN 表1 ON(关联条件)
           LEFT JOIN 表2 ON(关联条件)
           LEFT JOIN 表3 ON(关联条件)
           LEFT JOIN 表4 ON(关联条件)
    ................
    希望能给你点帮助
             
      

  6.   

    关联另外一个问题 
    http://topic.csdn.net/u/20090519/16/f532e01d-b979-44ec-aef3-234e4ef442b4.html
    大家看下能不能解决
      

  7.   

    关键是没看明白你想实现什么?建议能在贴子中把表结构,数据,期望的结果描述出来,这样获得解决方案的机会很更多。参考一下个人觉得比较好的提问方式。得到回复的机率会大一些http://www.accessbbs.cn/bbs/viewthread.php?tid=19552
    http://www.accessbbs.cn/bbs/viewthread.php?tid=19546
      

  8.   

    有两张表,打算通过查询把N张表合并成一张表,然后新建这个张表,请高手指点一下: 
    表一: acid_event 
    sid cid timestamp                  .... 
    1      2      2009-04-01 15:18:33        .... 
    1      3      2009-04-01 15:18:33        .... 
    .... 
    表二:  data 
    sid cid data 
    1      2      4142434445464748494A4B4C4D4E4F5051525354555657414243444546474849 
    1      3      4142434445464748494A4B4C4D4E4F5051525354555657414243444546474849 
    .... 
    打算将这两张表的一些字段提取新建一个数据表: 
    sid cid timestamp                data 
    1      2      2009-04-01 15:18:33      4142434445464748494A4B4C4D4E4F5051525354555657414243444546474849 
    1      3      2009-04-01 15:18:33      4142434445464748494A4B4C4D4E4F5051525354555657414243444546474849 
    .... 
    提取各个表中的一些特殊字段  来“新建”一个数据表 新建当然包含先建表,然后添加字段,字段类型,然后再数据 
      

  9.   

    select a.sid,a.cid,a.timestamp,d.data
    from acid_event a,data d
    where a.sid=d.sid and a.cid=d.cid或者
    select a.sid,a.cid,a.timestamp,d.data
    from acid_event a inner join data d on a.sid=d.sid and a.cid=d.cid
    where a.sid=d.sid and a.cid=d.cid
      

  10.   

    如果需要生成表则可以先create table xx (sid int, cid int, timestamp datetime,data varchar(1000));然后进行insert into xx select a.sid,a.cid,a.timestamp,d.data
    from acid_event a,data d
    where a.sid=d.sid and a.cid=d.cid
      

  11.   


    那怎么在代码中,是用mysql_real_query这个来执行创建数据表吗?
      

  12.   

    可以啊,你可以用 mysql_real_query() 来运行 create table ,前提是你有create table 的权限就行了。
      

  13.   


    哦明白了
    对了 可不可以 代码提取字段的类型 可不可以提取呀
    比如别的表sid的类型 提取出来 然后 创建的时候 直接用就可以了吧
    要不还要代码里硬性去写
      

  14.   

    你可以通过 desc tablename得到列的属性。