0

ユーザーにはさらに多くのタスクがあります。1:N接続。

視覚的に:

admin
 task1 2011/01/01 00:00:01
 task2 2011/01/01 00:00:04
 task3 2011/01/01 00:00:02
user2
 task1 2011/03/01 00:01:01
 task2 2011/03/01 00:01:04
 task3 2011/03/01 00:01:02

(前の質問のスキーマを参照してください)

すべてを取得するのではなく、ユーザーと最後の「タスク」に参加したままにする方法は?

問題は、純粋なSQLでそれを行う方法がわからないことです...ここでいくつかの例を見ましたが、それらは機能していません。

4

1 に答える 1

6

前の質問$user_idのスキーマに従って、ユーザーIDが内部にあると見なされた場合は、次のことを試すことができます。

$q = Doctrine_Query::create()
    ->select('u.*, t.*')
    ->from('User u')
    ->leftJoin('u.Task t')
    ->where('t.id IN (SELECT t2.id FROM Task t2 WHERE t2.owner_id = ? ORDER BY t2.id DESC LIMIT 1)', array($user_id));
$res = $q->execute();

Doctrineのサブクエリのドキュメントは次のとおりです。

于 2012-12-29T13:37:55.483 に答える