想在mysql中进行复杂的查询?

时间:2011-10-08 07:04:16

标签: mysql database codeigniter

我必须删除数据并计算facebbok之类的通知。有3个表我需要删除数据 第一张公司表,我删除公司ID。 第二个表是mark_question,其中我将问题标记为已读/未读,fav / unfav,通知状态 第三是论坛主题问题,其中涉及问题的数据

在查询结果中删除第一个查询,其中我得到一组值。

select * 
       from gl_mark_ques 
       where user_id =".$this->session->userdata('user_id')." and 
             vs_ques_status=0

在此之后,我得到一组id,这些id不应出现在我执行的下一个查询中

SELECT uc.*,count(mq.vs_ques_status) 
       from gl_user_comp as uc 
       inner join gl_mark_ques as mq 
             on uc.user_id=mq.user_id and 
                uc.comp_id='$comp_id' 
       where mq.user_id<>".$this->session->userdata('user_id')." and 
             mq.new_ques_id!=2 and 
             mq.vs_ques_status=1

mq.new_ques_id = 2&lt; - 这里我需要添加我从第一次查询得到的id。可能只有一个id或多个id。我如何整合这种友好的帮助,提前谢谢

2 个答案:

答案 0 :(得分:0)

如果您不希望从第二个查询中删除第一个查询中的ID,为什么不在第二个查询中将第一个WHERE的否定部分添加为AND?

AND (user_id !=".$this->session->userdata('user_id')." or vs_ques_status!=0)

我不完全理解你的问题,但是,无论如何你可以创建一个子查询并在WHERE中应用NOT IN(SELECT ...)...

答案 1 :(得分:0)

 SELECT uc.*,count(mq.vs_ques_status) as cnt_status_advhub 
from gl_user_comp as uc inner join gl_mark_ques as mq 
on uc.user_id=mq.user_id and uc.comp_id='$comp_id' 
where mq.user_id<>".$this->session->userdata('user_id')." and 
mq.vs_ques_status=1 and mq.new_ques_id NOT IN 
(select new_ques_id from gl_mark_ques where user_id 
=".$this->session->userdata('user_id')." and vs_ques_status=0)