requête sql à la sauce zend
Bonjour, j'ai une requête sql à écrire avec zend db, et j'ai pas envie d'écrire la requête en brute, donc voici la requête sql, qui marche:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| SELECT *
from catalogues_index AS i
INNER JOIN catalogues_element AS e ON i.element_id = e.element_id
LEFT JOIN catalogues_traduction AS l ON i.element_id = l.element_id AND l.traduction_langue = "US"
INNER JOIN catalogues_heritage AS h ON i.heritage_id = h.heritage_id
WHERE i.heritage_id IN (
SELECT heritage_id
FROM catalogues_heritage
WHERE catalogue_id =6
)
AND i.index_type = 1 |
Et en zend db, tout passe bien sauf le 'AND' dans le left join:
Code:
1 2 3 4 5 6 7 8 9 10
| return $this->fetchAll($this->select()
->setIntegrityCheck(false)
->from(array('i' => 'catalogues_index'))
->joinInner(array('e' => 'catalogues_element'), 'i.element_id = e.element_id')
->joinLeft(array('l' => 'catalogues_traduction'), "i.element_id = (SELECT element_id from catalogues_traduction where element_id = i.element_id AND traduction_langue =$lang)")
->joinInner(array('h' => 'catalogues_heritage'), 'i.heritage_id = h.heritage_id')
->WHERE('i.heritage_id IN (?)', $heritage)
->WHERE('i.index_type =?', $type_id)
)->toArray(); |
Oui, j'ai rajouté un 'Select element_id ect ... pour essayer de mieux cerner le problème, et même dans ce cas, il me dis ceci:
Citation:
Column not found: 1054 Unknown column 'US' in 'where clause'
en réponse à AND traduction_langue =$lang sachant que $lang vaut bien US, je comprend pas qu'il interprete ça comme une colonne et non une value Oo
Et, avant que quelqu'un me le fasse remarquer, il faut que le AND l.traduction_langue = "US" soit bien dans la clause LeftJoin et non pas en where, car le résultat que j'attend c'est un tableau avec des valeurs vide lorsqu'il ne trouve pas de valeure dans ce leftjoin, mais que le leftjoin ne vérifie que les cas où l'identifiant de l'élément est égal à celui du catalogue, et que la langue cherchée est bien 'US'
(car un élément peut avoir plusieurs traductions possible et je ne veux lister que celles de la langue choisis)
Quelqu'un peut m'aider à comprendre?