本帖最后由 ylmdy 于 2010-07-05 10:21:44 编辑

解决方案 »

  1.   

    瞄了一眼没看懂,建议能直接举例说明。
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    谢谢ACMAIN_CHM老大的提醒,帖子可能不是很规范,稍后我重新更改一下哈!  希望看得懂的朋友先帮忙一下
      

  3.   

    用我的句子查出来的结果是只有在host_field_value保存的数据,字段表host_field的其他字段host_field_value里没值就没列出来了。   各位可以按我的表结构运行看看
      

  4.   

    这样 ?
    SELECT * FROM host_field hf 
    LEFT JOIN host_field_value hfv ON hf.hf_id = hfv.hfv_fid
    LEFT JOIN HOST h ON h.hid = hfv.hfv_hid 
     ORDER BY h.hid ASC, hf.hf_id ASC贴要求结果出来看看
      

  5.   

    我现在的查询句子是:
    SELECT h.hid,h.hstate, hf.hf_id,hf.hf_name, hf.hf_title,hf.hf_ifsearch, hfv.hfv_value 
    FROM host_field_value hfv 
    LEFT JOIN (host h, host_field hf) 
    ON (h.hid = hfv.hfv_hid AND hf.hf_id = hfv.hfv_fid) 
    ORDER BY h.hid ASC, hf.hf_id ASC
    得到的结果是:
    注意看hid 1的的hf_id有到22  hid2的的hf_id只有到11.
    因为hid1和hid2保存在host_field_value表里只有那些字段的值,
    我想实现的是根据host_field表的数据:让查出来的所有网站的hf_id能到22(就是host_field的全部字段)。不知道能明白我的意思了么?  晕,  我表达不好.
      

  6.   

    我期待的正确结果就是:这张图的hid为2的 的hf_id也能像hid为1的 的hf_id那么多
      

  7.   

    A表:
    aid astate ..
    1   1
    2   1B表:(这张表用于保存A表的字段属性)
    bid  bfield
    1    f1
    2    f2
    3    f3C表:(这张表就是保存字段对应的值了)
    cid aid bid cvalue
    1   1   1   v11
    2   1   2   v12
    3   1   3   v13
    4   2   1   v21
    5   2   2   v22
    6   3   1   v31然后希望得出来的数据结构是:
    aid bid bfield cvalue
    1   1   f1     v11
    1   2   f2     v12
    1   3   f3     v13
    2   1   f1     v21
    2   2   f2     v22
    2   3   f3     null
    3   1   f1     v31
    3   2   f2     null
    3   3   f3     null
    我现在主要碰到的问题是:我没办法表现出上面cvalue是null的记录
    按上面描述  我现在的sql语句查询来的是:
    aid bid bfield cvalue
    1   1   f1     v11
    1   2   f2     v12
    1   3   f3     v13
    2   1   f1     v21
    2   2   f2     v22
    3   1   f1     v31
      

  8.   

    mysql> select a.aid,b.bid,b.bfield,c.cvalue
        -> from (a , b) left join c on a.aid=c.aid and b.bid=c.bid
        -> order by 1,2;
    +-----+-----+--------+--------+
    | aid | bid | bfield | cvalue |
    +-----+-----+--------+--------+
    |   1 |   1 | f1     | v11    |
    |   1 |   2 | f2     | v12    |
    |   1 |   3 | f3     | v13    |
    |   1 |   4 | f4     | NULL   |
    |   2 |   1 | f1     | v21    |
    |   2 |   2 | f2     | v22    |
    |   2 |   3 | f3     | NULL   |
    |   2 |   4 | f4     | NULL   |
    |   3 |   1 | f1     | v31    |
    |   3 |   2 | f2     | NULL   |
    |   3 |   3 | f3     | NULL   |
    |   3 |   4 | f4     | NULL   |
    +-----+-----+--------+--------+
    12 rows in set (0.01 sec)mysql>
      

  9.   

    SELECT aa.aid,aa.bid,aa.bfield,c.cvalue FROM (
    SELECT * FROM a,b
    ORDER BY a.aid,bid) aa
    LEFT JOIN c ON aa.bid=c.bid AND aa.aid=c.aid
      

  10.   

    ACMAIN_CHM和WWWWA的方法都可行!  在此结贴,谢谢!