0

クエリの作成に問題があります。私はたくさんグーグルで検索しましたが、適切な解決策が見つかりませんでした。'blog'(親)というテーブルと'entry'(子)というテーブルがあります。

ブログ

  • id
  • 主題
  • オーナー

エントリ

  • id
  • blog_id
  • 公開済み(1 =公開済み、0 =未公開)
  • date_created(タイムスタンプ、作成時および公開時)

ブログには複数のエントリがあります。公開されたエントリのみが他のユーザーに表示されます。

最新の変更された10個のブログをフェッチするクエリを作成したいと思います。このため、すべてのブログを検索し、最新のPUBLISHEDエントリ(entry.date_modified)で並べ替えるには、SQLで「foreach」に相当するものが必要ですが、if entry.published=1のみです。

私のSQLの知識は、そのようなクエリを作成できるレベルではありません。追加情報:MySQLでPHP(codeigniter)を使用する

私はこれを試しましたが、それは決して機能しないことを知っていましたが、私が達成しようとしていることの参照として役立つかもしれません

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ステートメントを作成できますか?

4

2 に答える 2

1

私はこれがうまくいくと信じています:

SELECT blog_id
FROM entry
WHERE published = 1
GROUP BY blog_id
ORDER BY MAX(date_created) DESC
LIMIT 0, 10
于 2012-05-07T14:39:24.797 に答える
-1

おそらくこれで十分です。

SELECT blog_id
FROM entry
WHERE published = 1
Group By blog_id
ORDER by date_created desc
LIMIT 0, 10
于 2012-05-07T14:32:11.000 に答える