0

私はさまざまな種類の仕事のテーブルを持っています。構造は次のようになります。

id
job_id
rev
[other fields]

したがって、ジョブが編集されるたびに新しい行がデータベースに追加され、一意の ID が付けられ、job_id は前回と同じになり (ジョブは同じですが、編集されたばかりであるため)、rev 番号は大きくなります (1 -> 2)。

これらのジョブをテーブルに表示したいと思います.idはデータを取得して、job_idでグループ化され、最新のリビジョンが表示されるようにします。

例:

1    53kjA7    1     This is a job
2    Adf98A    1     Another job
3    53kjA7    2     This is a job edited
4    8123Ag    1     More jobs
5    Adf98A    2     Another job edited

テーブルには次のように表示されます。

3    53kjA7    2    This is a job edited
5    Adf98A    2     Another job edited
4    8123Ag    1     More jobs

私はcodeigniterとその組み込みのアクティブレコードを使用しています。次のように試しました:

$this->db->select()->from('jobs')->group_by('job_id')->select_max('rev');

しかし、結果は最新のリビジョン番号を持つグループ化されたジョブを示すテーブルですが、他のすべての情報は、次のように同じグループの別のジョブからのものです:

1    53kjA7    2     This is a job
2    Adf98A    2     Another job
4    8123Ag    1     More jobs

アクティブなレコードでこれを行う方法はありますか、それともカスタム SQL 文字列を作成する必要がありますか?

4

1 に答える 1

0

いくつかの考え。あなたの結合は他のテーブルにどのように見えますか (結合がオフになっているのではないかと思います)? また、最新のリビジョンを取得するには order_by が必要になる場合があります。

于 2013-07-25T15:39:34.120 に答える