J'ai le tableau suivant.Zend DB Joindre 2 rangées de la même table
---------------------------------------------
check_id | action_id | user_id | dt |
---------------------------------------------
1 | 1 | 6 | 2011-09-17 |
2 | 1 | 6 | 2011-09-18 |
3 | 3 | 6 | 2011-09-19 |
4 | 3 | 6 | 2011-09-20 |
---------------------------------------------
Je voudrais interroger cette table et obtenir le résultat suivant.
-----------------------------------------------
action_id | user_id | dt_start | dt_end |
-----------------------------------------------
1 | 6 | 2011-09-17 | 2011-09-18 |
3 | 6 | 2011-09-19 | 2011-09-20 |
-----------------------------------------------
Donc j'utilise la requête suivante.
$checks->select()
->from(array('c1' => 'checks'), array('dt as dt_start')
->joinLeft(array('c2' => 'checks'), 'c1.action_id = c2.action_id', array('dt as dt_end')
->where('c1.user_id = ?', $userId)
->group('c1.action_id')
Mais cela me donne le résultat suivant.
-----------------------------------------------
action_id | user_id | dt_start | dt_end |
-----------------------------------------------
1 | 1 | 2011-09-17 | 2011-09-17 |
1 | 3 | 2011-09-19 | 2011-09-19 |
-----------------------------------------------
Quelqu'un peut-il me dire ce que je fais mal?
Ce que SQL que vous essayez de créer via Zend_Db_Select n'est pas immédiatement clair pour moi. Pouvez-vous ajouter le SQL à la question? En outre, vous pouvez utiliser la méthode Zend_Db_Select :: toString pour imprimer le SQL qui sera exécuté lors de la requête, ce qui peut vous aider à déboguer. –