0

現在、データベースに対してクエリを実行する 2 つの関数があります。最初のものはすべてのエントリに対してクエリを実行し、2 つ目は仕様 (バージョン管理用) を持っています。

データベース ->編集済み

id | version_id | post_id
-------------------------
1  |    1       |   1
2  |    2       |   2
3  |    1       |   1
4  |    1       |   1

コード ->編集済み

public function post($postid)
{
    global $db;
    $query = "SELECT * FROM news";
    return $db->select($query);
}
public function version_count()
{
    global $db;
    $query = "SELECT * FROM news WHERE post_id='1' ORDER BY version_id DESC LIMIT 1";
    return $db->select($query);
}

エントリを表示するために、次のことを試しましたが、期待どおりに動作し、すべてのエントリが表示されます。

$posts_array = $query->post($post);
foreach ( $counted_versions as $post )
{
    echo $post->id . "-";
}

ただし、行 2 と 4 のみをエコーし​​たいのは、2 が一意で 4 が最新であるためです。

最初は、このロジックが機能すると思いました:

$posts_array = $query->post($post);
$counted_versions  = $query->version_count();

foreach ( $counted_versions as $counted )
{
    foreach ( $posts_array as $post )
    {
        echo $post->id . "-";
    }
}

しかし、むしろ、1-2-3-4-foreach ループを切り替えると、 が得られますが、少なくとも or を4-4-4-4-期待する(またはまたは)。2-41-44-24-1

誰かが同様の結果を得る方法を持っていますか?

4

1 に答える 1

0

idそれぞれの最高値が必要な場合はpost_id、次のクエリを使用します。

SELECT post_id, MAX(id) max_id
FROM news
GROUP BY post_id
于 2013-09-14T19:26:22.730 に答える