求一条sql话语。

求一条sql语句。。想了半天,也没个头绪不知道该怎么写。我要查询DISCUZ X2.0的三个表,分别是pre_forum_thread

求一条sql语句。。
想了半天,也没个头绪不知道该怎么写。
我要查询DISCUZ X2.0的三个表,分别是pre_forum_thread,pre_forum_attachment索引表,pre_forum_attachment_n的子表

SQL code
CREATE TABLE IF NOT EXISTS `pre_forum_thread` (  `tid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,  `fid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `posttableid` smallint(6) unsigned NOT NULL DEFAULT '0',  `typeid` smallint(6) unsigned NOT NULL DEFAULT '0',  `sortid` smallint(6) unsigned NOT NULL DEFAULT '0',  `readperm` tinyint(3) unsigned NOT NULL DEFAULT '0',  `price` smallint(6) NOT NULL DEFAULT '0',  `author` char(15) NOT NULL DEFAULT '',  `authorid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `subject` char(80) NOT NULL DEFAULT '',  `dateline` int(10) unsigned NOT NULL DEFAULT '0',  `lastpost` int(10) unsigned NOT NULL DEFAULT '0',  `lastposter` char(15) NOT NULL DEFAULT '',  `views` int(10) unsigned NOT NULL DEFAULT '0',  `replies` mediumint(8) unsigned NOT NULL DEFAULT '0',  `displayorder` tinyint(1) NOT NULL DEFAULT '0',  `highlight` tinyint(1) NOT NULL DEFAULT '0',  `digest` tinyint(1) NOT NULL DEFAULT '0',  `rate` tinyint(1) NOT NULL DEFAULT '0',  `special` tinyint(1) NOT NULL DEFAULT '0',  `attachment` tinyint(1) NOT NULL DEFAULT '0',  `moderated` tinyint(1) NOT NULL DEFAULT '0',  `closed` mediumint(8) unsigned NOT NULL DEFAULT '0',  `stickreply` tinyint(1) unsigned NOT NULL DEFAULT '0',  `recommends` smallint(6) NOT NULL DEFAULT '0',  `recommend_add` smallint(6) NOT NULL DEFAULT '0',  `recommend_sub` smallint(6) NOT NULL DEFAULT '0',  `heats` int(10) unsigned NOT NULL DEFAULT '0',  `status` smallint(6) unsigned NOT NULL DEFAULT '0',  `isgroup` tinyint(1) NOT NULL DEFAULT '0',  `favtimes` mediumint(8) NOT NULL DEFAULT '0',  `sharetimes` mediumint(8) NOT NULL DEFAULT '0',  `stamp` tinyint(3) NOT NULL DEFAULT '-1',  `icon` tinyint(3) NOT NULL DEFAULT '-1',  `pushedaid` mediumint(8) NOT NULL DEFAULT '0',  `cover` smallint(6) NOT NULL DEFAULT '0',  `replycredit` smallint(6) NOT NULL DEFAULT '0',  PRIMARY KEY (`tid`),  KEY `digest` (`digest`),  KEY `sortid` (`sortid`),  KEY `displayorder` (`fid`,`displayorder`,`lastpost`),  KEY `typeid` (`fid`,`typeid`,`displayorder`,`lastpost`),  KEY `recommends` (`recommends`),  KEY `heats` (`heats`),  KEY `authorid` (`authorid`),  KEY `isgroup` (`isgroup`,`lastpost`),  KEY `special` (`special`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=380 ;


pre_forum_attachment结构如下:
SQL code
CREATE TABLE IF NOT EXISTS `pre_forum_attachment` (  `aid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,  `tid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `pid` int(10) unsigned NOT NULL DEFAULT '0',  `uid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `tableid` tinyint(1) unsigned NOT NULL DEFAULT '0',  `downloads` mediumint(8) NOT NULL DEFAULT '0',  PRIMARY KEY (`aid`),  KEY `tid` (`tid`),  KEY `pid` (`pid`),  KEY `uid` (`uid`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=110 ;


pre_forum_attachment_n子表结构如下
SQL code
CREATE TABLE IF NOT EXISTS `pre_forum_attachment_0` (  `aid` mediumint(8) unsigned NOT NULL,  `tid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `pid` int(10) unsigned NOT NULL DEFAULT '0',  `uid` mediumint(8) unsigned NOT NULL DEFAULT '0',  `dateline` int(10) unsigned NOT NULL DEFAULT '0',  `filename` varchar(255) NOT NULL DEFAULT '',  `filesize` int(10) unsigned NOT NULL DEFAULT '0',  `attachment` varchar(255) NOT NULL DEFAULT '',  `remote` tinyint(1) unsigned NOT NULL DEFAULT '0',  `description` varchar(255) NOT NULL,  `readperm` tinyint(3) unsigned NOT NULL DEFAULT '0',  `price` smallint(6) unsigned NOT NULL DEFAULT '0',  `isimage` tinyint(1) NOT NULL DEFAULT '0',  `width` smallint(6) unsigned NOT NULL DEFAULT '0',  `thumb` tinyint(1) unsigned NOT NULL DEFAULT '0',  `picid` mediumint(8) NOT NULL DEFAULT '0',  PRIMARY KEY (`aid`),  KEY `tid` (`tid`),  KEY `pid` (`pid`),  KEY `uid` (`uid`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; 



我需要的语句是,我要获得thread表里attachment=1(也就是含有附件的)的10条内容,并且要通过关联tid对应到attachment索引表再关联到该附件所在的attachment_n(n算是一个变量)子表,然后读取attachment_n子表里isimage=1(也就是该附件为图片)的内容。

[解决办法]
select * from pre_forum_thread a, pre_forum_attachment_n b where a.tid=b.tid and a.attachment=1 and b.isimage=1 limit 10 ;
[解决办法]
首先
pre_forum_attachment_(SELECT i.tableid as n FROM `pre_forum_attachment` AS i WHERE i.tid = t.tid )
不符合语法规则
在这里 如果 SELECT i.tableid as n FROM `pre_forum_attachment` AS i WHERE i.tid = t.tid 返回的是单值数据,那么可以写作
set @t:=concat('pre_forum_attachment_', (SELECT i.tableid as n FROM `pre_forum_attachment` AS i WHERE i.tid = t.tid));
然后再
select * from `@t`

显然这只有通过存储过程来完成
[解决办法]