2010-10-19 5 views
0

Je suis en train de construire cette requête avec Zend DB:Zend DB: problème joinLeft

SELECT 
    `s` . * , 
    `a` . * 
FROM 
    `shr_statement` AS `s` 
LEFT JOIN 
    `shr_answer` AS a` 
ON 
    a.statement_id = s.statement_id 
    AND 
    a.user_id =1 
WHERE 
    (s.language = 'en_US') AND (s.is_active =1) 
ORDER BY 
    `order` ASC 

Je lis au sujet d'un problème possible avec la double 'ON' ... déclaration

Merci!

+0

Quelle est votre question réelle ou vous ne voulez juste quelqu'un de coder votre requête pour vous? – Mark

+0

Salut, Non, pas du tout :-). J'ai eu un problème avec joinLeft et je me demandais comment vous pourriez le coder. Je l'ai finalement résolu par la réponse ici et un alias – koko

Répondre

3

Cela devrait faire l'affaire, où $ db est une instance de l'adaptateur Zend_Db

$select = $db->select() 
    ->from(array('s' => 'shr_statement')) 
    ->joinLeft(array('a' => 'shr_answer'), 'a.statement_id = s.statement_id') 
    ->where('s.language = ?', 'en_US') 
    ->where('s.is_active = ?', 1) 
    ->where('a.user_id = ?', 1) 
0

Il semble qu'il vous manque le backtick gauche de votre alias .. ie il devrait être "shr_answer AS a".

Ou encore mieux de se débarrasser de tous vos backticks. Ils sont mauvais et inutiles! ;)