2

現在実行しているクエリは次のとおりです。

$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」で終わるコースの学生を見つけてください。

次に、同じクエリ内に or ステートメントを追加して、次のようにする必要があります。

「ICV」始まり「312」で終わるコースの学生を見つけてください(roleid 5またはroleid 15 を持っています)。

MySQL でこのようにネストされた条件をどのようにフォーマットしますか?

4

2 に答える 2

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)
于 2012-11-16T14:19:58.583 に答える
0

最も簡単なのは

SELECT *
FROM tableName
WHERE columnName LIKE 'ICV%312' AND
      roleID IN (5,15)
于 2012-11-16T14:19:39.567 に答える