ID 标志 是否主题 作者 内容
1 A 1 张三 ....
2 A 0 李四 ....
3 A 0 文五 ....
4 A 0 文五 ....
5 B 1 xxxx ....
..............
我是这样设计的,“标志”值相同的记录就是某主题及其跟帖。“是否主题”值是1表示是主题,0则为跟贴。
我现在要做一个搜索功能。搜索某人参与的主题(发了跟贴)。 比如搜索:文五。 那么得到ID为1的那条主题记录,且仅仅一条。当搜索: 张三,则没有记录,因为他发的只有主题,没有跟贴。
不知道一条sql语句是否能搞定!!谢谢!!等待中。。。
我的数据库是mysql.不过改版好象很久都没人知道。我觉得这个版面高手多,特也来此问问。用sql server的SQL也行。应该差不多。
11 个解决方案
#1
select * from 帖子表 where 是否主题=1 and 标志 in(select 标志 from 帖子表 where 作者='文五')
#2
TRY:
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=1 and 作者='文五')
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=1 and 作者='文五')
#3
TRY:更正
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=0 and 作者='文五')
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=0 and 作者='文五')
#4
上面的语句在mysql不能用,用这个:
select * from table AA ,table BB where aa.标志=bb.标志 and aa.是否主题=1 and bb.是否主题=0 and bb.作者='文五'
select * from table AA ,table BB where aa.标志=bb.标志 and aa.是否主题=1 and bb.是否主题=0 and bb.作者='文五'
#5
谢谢大家,Mysql居然不支持子查询。。。郁闷!!
#6
CrazyFor(蚂蚁) 兄。 BB 是怎么来的?
#7
自己和自己的连接查询啊,mysql应该支持的吧。
#8
55。其实我这是简化了的。实际是:
select tb_forum_post.flag,tb_forum_post.title,tb_forum_post.time,tb_regist.nickname,tb_forum_post.post_count,tb_forum_post.click,tb_forum_post.up,tb_forum_post.area_id from tb_forum_post,tb_regist where tb_forum_post.author=tb_regist.username and topic=1 and flag in (select flag from tb_forum_post where author like '%webmaster%' and topic=0 )
这条语句在mysql里搞不定。。如果现在再来一个BB应该加哪呢?因为已经有两个表了 。
select tb_forum_post.flag,tb_forum_post.title,tb_forum_post.time,tb_regist.nickname,tb_forum_post.post_count,tb_forum_post.click,tb_forum_post.up,tb_forum_post.area_id from tb_forum_post,tb_regist where tb_forum_post.author=tb_regist.username and topic=1 and flag in (select flag from tb_forum_post where author like '%webmaster%' and topic=0 )
这条语句在mysql里搞不定。。如果现在再来一个BB应该加哪呢?因为已经有两个表了 。
#9
可以用 left join实现吗?
#10
我上面的和 inner join是一样效果的,
不能用left join ,这样返回的记录太多了。
不能用left join ,这样返回的记录太多了。
#11
CrazyFor(蚂蚁) 兄。
问题是:已经有
select AA.x, BB.y from AA,BB where AA.h = BB.i 了。那在哪加自己和自己的连接表CC呢?
问题是:已经有
select AA.x, BB.y from AA,BB where AA.h = BB.i 了。那在哪加自己和自己的连接表CC呢?
#1
select * from 帖子表 where 是否主题=1 and 标志 in(select 标志 from 帖子表 where 作者='文五')
#2
TRY:
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=1 and 作者='文五')
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=1 and 作者='文五')
#3
TRY:更正
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=0 and 作者='文五')
select * from table AA where 是否主题=1 and 标志 in (select 标志 from table where 是否主题=0 and 作者='文五')
#4
上面的语句在mysql不能用,用这个:
select * from table AA ,table BB where aa.标志=bb.标志 and aa.是否主题=1 and bb.是否主题=0 and bb.作者='文五'
select * from table AA ,table BB where aa.标志=bb.标志 and aa.是否主题=1 and bb.是否主题=0 and bb.作者='文五'
#5
谢谢大家,Mysql居然不支持子查询。。。郁闷!!
#6
CrazyFor(蚂蚁) 兄。 BB 是怎么来的?
#7
自己和自己的连接查询啊,mysql应该支持的吧。
#8
55。其实我这是简化了的。实际是:
select tb_forum_post.flag,tb_forum_post.title,tb_forum_post.time,tb_regist.nickname,tb_forum_post.post_count,tb_forum_post.click,tb_forum_post.up,tb_forum_post.area_id from tb_forum_post,tb_regist where tb_forum_post.author=tb_regist.username and topic=1 and flag in (select flag from tb_forum_post where author like '%webmaster%' and topic=0 )
这条语句在mysql里搞不定。。如果现在再来一个BB应该加哪呢?因为已经有两个表了 。
select tb_forum_post.flag,tb_forum_post.title,tb_forum_post.time,tb_regist.nickname,tb_forum_post.post_count,tb_forum_post.click,tb_forum_post.up,tb_forum_post.area_id from tb_forum_post,tb_regist where tb_forum_post.author=tb_regist.username and topic=1 and flag in (select flag from tb_forum_post where author like '%webmaster%' and topic=0 )
这条语句在mysql里搞不定。。如果现在再来一个BB应该加哪呢?因为已经有两个表了 。
#9
可以用 left join实现吗?
#10
我上面的和 inner join是一样效果的,
不能用left join ,这样返回的记录太多了。
不能用left join ,这样返回的记录太多了。
#11
CrazyFor(蚂蚁) 兄。
问题是:已经有
select AA.x, BB.y from AA,BB where AA.h = BB.i 了。那在哪加自己和自己的连接表CC呢?
问题是:已经有
select AA.x, BB.y from AA,BB where AA.h = BB.i 了。那在哪加自己和自己的连接表CC呢?