2012-11-16 58 views
2

這裏結合的MySQL AND和OR語句就是我當前正在運行的查詢:在同一查詢

$result = R::getAll("SELECT * FROM vw_participantes_curso JOIN vw_cursos ON vw_participantes_curso.id = vw_cursos.id_curso where LEFT(vw_cursos.sigla, 3) = 'ICV' AND RIGHT(vw_cursos.sigla, 3) = '312' AND username = :u", 
    array(':u' => $username) 
); 

用簡單的英語該查詢寫着:

我找一個學生是在一門課程以'ICV'開頭並以'312'結尾。

現在我需要添加一個或語句相同的查詢裏面,所以它讀取:

我找一個學生是在與「ICV」 開始的課程與「312結束'(具有角色5 角色15)。

如何在MySQL中對這種嵌套條件進行格式化?

+0

做它完全按照你在你的僞代碼。在'()'中將這兩個條件分組在一起。 –

回答

1

您可以使用in操作:

SELECT * 
FROM vw_participantes_curso 
JOIN vw_cursos 
ON vw_participantes_curso.id = vw_cursos.id_curso 
where LEFT(vw_cursos.sigla, 3) = 'ICV' 
AND RIGHT(vw_cursos.sigla, 3) = '312' 
AND username = :u 
AND roleid in (5,15) 

,或者如果你真的想or操作:

SELECT * 
FROM vw_participantes_curso 
JOIN vw_cursos 
ON vw_participantes_curso.id = vw_cursos.id_curso 
where LEFT(vw_cursos.sigla, 3) = 'ICV' 
AND RIGHT(vw_cursos.sigla, 3) = '312' 
AND username = :u 
AND (roleid = 5 or roleid = 15) 
+0

''''關鍵字看起來確實是「Postgres-y」 - 謝謝! – sergserg

0

的simpliest將

SELECT * 
FROM tableName 
WHERE columnName LIKE 'ICV%312' AND 
     roleID IN (5,15)