我有一个查询
SELECT * FROM cms_contentindex i LEFT JOIN cms_content3 c USING(tid) WHERE i.ifpub=1 AND i.mid='3' AND cid IN(4) ORDER BY i.hits desc LIMIT 0,30然后我要在这个语句中加入另外两个表的查询结果SELECT s.tagname,s.tagid FROM cms_contenttag t LEFT JOIN cms_tags s USING(tagid) WHERE t.tid='cms_contentindex的tid'我想把这两条语句组合成一条,不知道有什么办法

解决方案 »

  1.   

    不知道你是不是这个意思。SELECT s.tagname,s.tagid 
    FROM cms_contenttag t LEFT JOIN cms_tags s USING(tagid) 
    WHERE t.tid in (
    SELECT i.tid
    FROM cms_contentindex i LEFT JOIN cms_content3 c USING(tid) 
    WHERE i.ifpub=1 
    AND i.mid='3' 
    AND cid IN(4) 
    ORDER BY i.hits desc 
    LIMIT 0,30
    )
    
      

  2.   

    select * from (
    SELECT * FROM cms_contentindex i LEFT JOIN cms_content3 c USING(tid) WHERE i.ifpub=1 AND i.mid='3' AND cid IN(4) ORDER BY i.hits desc 
    LIMIT 0,30) a1
    left join
    (SELECT s.tagname,s.tagid FROM cms_contenttag t LEFT JOIN cms_tags s USING(tagid) WHERE t.tid='cms_contentindex的tid') b1
    on a1.tid=b1.tagid
      

  3.   

    cms_contentindex、cms_content3、cms_contenttag通过tid
    cms_contenttag、cms_tags通过tagidcms_contentindex、cms_content3这两个表的内容我也要查询出来
      

  4.   

    那么TID、TAGID有没有关系?如果没有,不能连接。
      

  5.   

    没有关系耶,但是cms_contenttag和cms_contentindex有关系,cms_contenttag又和cms_tags有关系,不是TID和TAGID间接有关系了吗,难道不行吗
      

  6.   

    select *
    from (
      SELECT *
      FROM cms_contentindex i LEFT JOIN cms_content3 c USING(tid) 
      WHERE i.ifpub=1 
        AND i.mid='3' 
        AND cid IN(4) 
      ORDER BY i.hits desc 
      LIMIT 0,30) a left join (
    SELECT s.tagname,s.tagid 
    FROM cms_contenttag t LEFT JOIN cms_tags s USING(tagid)   
    ) b on a.tid=b.tid但不清楚你的limit 30 想在哪一步控制,上面SQL是先控制,这样结果就不一定是 30 条了。或者会多。
      

  7.   

    limit 30是控制cms_contentindex i LEFT JOIN cms_content3 c USING(tid)你最后一个方法报Unknown column 'b.tid' in 'on clause'
      

  8.   

    如果将两条SQL语句合并,要根据你的关系来重新编写
      

  9.   

    http://www.pixian.gov.cn/pkgame.rar这是这几个表的所有文件
      

  10.   

    我的最终目的就是要的到cms_contentindex,cms_content3,cms_tags这三个表里面的所有字段
      

  11.   

    try:
    SELECT * FROM cms_contentindex i LEFT JOIN cms_content3 c USING(tid) 
    left join cms_contenttag t on t.tid=i.tid
    LEFT JOIN cms_tags s on t.tagid=s.tagid 
    WHERE i.ifpub=1 AND i.mid='3' AND cid IN(4) 
    ORDER BY i.hits desc LIMIT 0,30