这是一个discuz的数据库查询
需求是:查询某版块下的某主题下的所有message字段的内容
我是这样写的:
SELECT
b.message,
b.`subject`,
b.fid
FROM
sh_forum_post AS b
INNER JOIN sh_forum_threadclass AS a ON a.fid = b.fid
WHERE
a.`name` = '列表页图片'

实际的结果应该是两条,因为我发的,而用上面这个句子却查出了很多条,把所有的主题分类都加进去了,而我只想查出“列表页图片”这个主题,不知哪里有问题呢。

解决方案 »

  1.   

    试试
    SELECT
     b.message,
     b.`subject`,
     b.fid
     FROM
     sh_forum_post AS b
     LEFT JOIN sh_forum_threadclass AS a ON a.fid = b.fid
     WHERE
     a.`name` = '列表页图片'
      

  2.   

    SELECT
    b.message,
    b.`subject`,
    b.fid
    FROM
    sh_forum_post AS b
    INNER JOIN (select * from sh_forum_threadclass 
    WHERE `name` = '列表页图片')  
    AS a ON a.fid = b.fid
      

  3.   

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

  4.   

    http://pan.baidu.com/s/1gdmYk7L  这个是数据库文件压缩包。
    说明我的意图,该数据库中两个表sh_forum_threadclass和sh_forum_post,这两表中的字段fid是一回事
    我想通过sh_forum_threadclass表中的主题分类字段“name”为“列表页图片”这个值,查出所有的信息,一共有两条,要是查出多条就错了,这两条是我设的。
      

  5.   

    用MYSQLDUMP导出来
      

  6.   

    试了不行。
    贴出你的数据库结构和数据示例以及要达到的效果这是我想要的
    http://pan.baidu.com/s/1gdmYk7L  这个是数据库文件压缩包。
    说明我的意图,该数据库中两个表sh_forum_threadclass和sh_forum_post,这两表中的字段fid是一回事
    我想通过sh_forum_threadclass表中的主题分类字段“name”为“列表页图片”这个值,查出所有的信息,一共有两条,要是查出多条就错了,这两条是我设的。
      

  7.   

    楼上给你的语句也试了,没有问题
    mysql> select * from sh_forum_threadclass where name='列表页图片';
    +--------+-----+-----------------+--------------+------+------------+
    | typeid | fid | name            | displayorder | icon | moderators |
    +--------+-----+-----------------+--------------+------+------------+
    |     36 | 129 | 列表页图片      |            0 |      |          0 |
    |     45 | 128 | 列表页图片      |            0 |      |          0 |
    +--------+-----+-----------------+--------------+------+------------+
    2 rows in set (0.00 sec)mysql> select fid from sh_forum_post where fid regexp '12[89]';
    +-----+
    | fid |
    +-----+
    | 128 |
    | 128 |
    | 128 |
    | 128 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    | 129 |
    +-----+
    14 rows in set (0.00 sec)