SQL foreach等效于查询

时间:2012-05-07 14:29:11

标签: mysql sql foreach

我在创建查询时遇到了困难。我google了很多但没找到合适的解决方案。 我有一个名为'blog'(父级)的表和一个名为'entry'(child)的表:

博客

  • ID
  • 受试者
  • 所有者

输入

  • ID
  • blog_id
  • 已发布(1 =已发布,0 =未发布)
  • date_created(时间戳,创建时和发布时)

博客有多个条目。只有已发布的条目对其他用户可见。

我想创建一个查询,它可以获取10个最新修改过的博客。为此,我可能需要SQL中的'foreach'等价来搜索所有博客,并通过最新的PUBLISHED条目(entry.date_modified)订购它们,但只有IF entry.published = 1

我的SQL知识不在允许我创建此类查询的级别上。 附加信息:使用PHP(codeigniter)与MySQL

我试过这个,知道它永远不会奏效,但它可以帮助你作为我想要完成的事情的参考

SELECT blog.id
FROM blog
JOIN entry ON entry.blog_id = blog.id
WHERE entry.published = 1
ORDER by entry.date_created desc
LIMIT 0, 10 

我希望我的最终结果是10个blog.id,其中他们的子条目发布最多。有人可以帮忙吗?非常感谢所有帮助。

如果在1个查询中无法实现这一点,也许使用PHP我可以使foreach语句执行单个查询吗?

2 个答案:

答案 0 :(得分:1)

我相信这会奏效:

SELECT blog_id
FROM entry
WHERE published = 1
GROUP BY blog_id
ORDER BY MAX(date_created) DESC
LIMIT 0, 10

答案 1 :(得分:-1)

这可能就是你所需要的。

SELECT blog_id
FROM entry
WHERE published = 1
Group By blog_id
ORDER by date_created desc
LIMIT 0, 10