学习PHPCMS V9,想弄个全站文章排行,在官方论坛上找了以下这段代码:
get sql="SELECT h.`dayviews`,n.`title`,n.`url`,n.`style` FROM `v9_hits` AS h,`v9_news` AS n WHERE substring_index(h.`hitsid`, '-', -1)=n.`id` AND n.`status`=99 ORDER BY h.`dayviews` DESC"
随后发现问题,这段代码只能列出新闻模型文章的点击排行,如果想把图片模型的文章也结合进来,无法调用到。请教了其他人,说是要用到多表查询,粗略查了一下,写了以下一段代码:
SELECT * FROM `v9_hits` AS h,`v9_news` AS a, `v9_picture` AS b WHERE substring_index(h.`hitsid`, '-', -1)=a.`id` AND substring_index(h.`hitsid`, '-', -1)=b.`id` AND a.`status`=99 AND b.`status`=99 ORDER BY h.`dayviews` DESC"
但是结果这段代码只调出了v9_picture的数据。
想请教一下,这个代码要如何修改才能实现多表查询?谢谢

解决方案 »

  1.   

    这个已经是多表查询了啊,内容是按照from后表格顺序排列的。
      

  2.   

    不是啊,v9_news这个表里面的数据出不来啊,只有v9_picture的数据啊
      

  3.   

    请给出测试数据看看 从你的语句上来看是没什么问题的。除非
    substring_index(h.`hitsid`, '-', -1)=a.`id`条件不满足
      

  4.   

    因为只得出了v9_picture的数据,查了一些网上资料,我也怀疑是substring_index(h.`hitsid`, '-', -1)=a.`id`没得到满足。是否后面的AND换成OR呢?这些语句有没有问题?
      

  5.   

    不好意思,我想得出的是v9_news和v9_picture这两个表中的文章按v9_hits表中的日点击dayviews来排行。我第一段代码能得出的结果是:能把v9_news中的文章按v9_hits表中的日点击得出排行。于是,我想写出第二段代码来得出v9_news和v9_picture这两个表中的文章按v9_hits表中的日点击dayviews来排行的结果,但是得出的结果只有v9_picture表中的文章的排行,而且是同篇文章出现两次。
      

  6.   

    不好意思,我没看清楚表。v9_picture表中的hitsid的格式应该是C-2-1这样,而NEWS中hits的格式是c-1-1。所以我第二段的代码中应该是格式错了。想请问一下,如果是要截取的话,是否是substring_index(h.`hitsid`, '-', -2)呢