0
我有這樣的SQL查詢其在phpMyAdmin正常工作:學說:GROUP_CONCAT的CASE語法是什麼?
SELECT `Tag_Type_Code`, `Tag_Type`,
GROUP_CONCAT(`Tag_Code` ORDER BY `Tag_Name`) as tagCode,
GROUP_CONCAT(`Tag_Name` ORDER BY `Tag_Name`) as tagName,
GROUP_CONCAT(CASE WHEN isnull(`Tag_Picto`) THEN 'NULL' ELSE `Tag_Picto` END ORDER BY `Tag_Name`) as tagPicto
FROM tags
WHERE `modele_code` = "MYCODE"
GROUP BY `Tag_Type_Code`
ORDER BY `tag_Type` ASC
而且我想這樣做在教義和Symfony3,我試過,但我有情況下,當附近有語法錯誤。
$this->getEntityManager()->createQuery(
'SELECT tag.typeCode, tag.type,
GROUP_CONCAT(tag.code ORDER BY tag.name) as tagCode,
GROUP_CONCAT(tag.name ORDER BY tag.name) as tagName,
GROUP_CONCAT(CASE WHEN tag.picto IS NULL THEN "NULL" ELSE tag.picto END ORDER BY tag.name) as tagPicto
FROM AppBundle:Tag tag
WHERE tag.modelCode = :code
GROUP BY tag.typeCode
ORDER BY tag.type ASC'
)->setParameter('code', $modelCode)
->getResult();
或者這樣:
'SELECT tag.typeCode, tag.type,
CASE WHEN tag.picto IS NULL THEN "NULL" ELSE tag.picto END as picto
GROUP_CONCAT(tag.code ORDER BY tag.name) as tagCode,
GROUP_CONCAT(tag.name ORDER BY tag.name) as tagName,
GROUP_CONCAT(picto ORDER BY tag.name) as tagPicto
FROM AppBundle:Tag tag
WHERE tag.modelCode = :code
GROUP BY tag.typeCode
ORDER BY tag.type ASC'
我還試圖用IfElse和IFNULL擴展從beberlei/DoctrineExtensions bundle,但我無法找到正確的語法。
此查詢在CASE WHEN時無效。
感謝您的幫助。
我不能再使用NULL測試,因爲我改變我的表我的價值觀。顯然,一個GROUP_CONCAT和一個CASE當它們在同一個查詢中不起作用時,我在這裏發佈了這個問題:https://github.com/beberlei/DoctrineExtensions/issues/222 – Felurian
但是,我應該使用setParameter()在我的查詢中設置NULL值:'CASE WHEN tag.picto =:search THEN:replace ELSE tag.picto END' [...]' - > setParameters(array('search'=> NULL,'replace'=> 'NULL'));' – Felurian