2013-03-28 4 views
0

Меня попросили сделать запрос в sql, используя двойное отрицание. Вопрос сам просит всех "SIGLA" и "Disciplina", где semestre_id составляет 21 и имеет, по меньшей мере, 1 атрибут "resposta" = 5Запрос двойного отрицания sql

стол http://i.imgur.com/8CDoFHZ.png

запрос http://i.imgur.com/5aueUKS.png

сейчас несмотря на публикацию всего этого, мой вопрос в основном состоит в том, что я не слишком уверен, что это способ сделать правильное двойное отрицание в sql, так как я получаю как ответ все строки таблицы, которые являются неправильными. Поскольку мне сложно искать примеры в Интернете, может ли кто-нибудь уточнить меня?

+0

Вы хотите, чтобы semestre_id был 21_, но вы выбираете, где semestre_id не является 21 – Justin

+0

Я думал, что сначала выбираю тех, у кого была реакция 5, затем выбирая semestre 21, у которых нет resposta 5, а затем выберите те, которые aren ' t semestre 21, у которых нет респоса 5 – user697110

+0

Ваш вопрос гласит: И для условия. Ваш комментарий выражает исключительное ИЛИ. Вы уверены в своем переводе на английский? – Sebas

ответ

1
select disc.disciplina_id, disc.sigla 
from ipdw_disciplina disc 
     inner join ipdw_respostas resp 
      on disc.disciplina_id = resp.disciplina_id 
where resp.semestre_id = 21 
     and resp.resposta = 5 
group by disc.disciplina_id, disc.sigla 

Я стараюсь избегать включения/выключения, когда это возможно. Кажется, легче следовать намерению запроса без них. Это похоже на довольно прямой запрос, который не требует двойного отрицания.

+0

Да без двойного отрицания было бы проще, однако вопросы явно что я должен использовать двойное отрицание. – user697110