SQL - условие размещения в предложении where - PullRequest
0 голосов
/ 13 февраля 2011

Ранее сегодня я задал этот вопрос на SO: Count () и проблема левого соединения

Как указано, правильный запрос для моей проблемы:

select s.name
       , p.name
       , count(p.id) 
from   Shop as s
       left join Product as p on p.shop=s.id AND p.status <> '8796107276379'
group by 
       s.id, p.name

Мы используем собственную платформу, которая позволяет нам добавлять ограничения к запросам, выполняемым в системе.Я совершенно уверен, что это достигается с помощью предложения where, добавляемого в конце запросов.

Проблема в том, могу ли я перевести вышеуказанный запрос таким образом, чтобы p.status <> '8796107276379' был в предложении where, чтобы я мог добавить это как ограничение?

Другие ответы Count () и проблема левого соединения все поместили условие в предложение where, но ни одно из них не сработало.

Есть идеи?

Заранее спасибо!

Krt_Malta

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011
select s.name
       , p.name
       , count(p.id) 
from   Shop as s
       left join Product as p on p.shop=s.id
where
       p.shop is null or p.status <> '8796107276379'
group by 
       s.id, p.name

Это будет работать в Oracle и MySQL, но может не работать на SQL Server (не уверен).

1 голос
/ 13 февраля 2011

Конечно ... (для SQL Server)

select s.name
       , p.name
       , count(p.id) 
from   Shop as s
       left join Product as p on p.shop=s.id 
where IsNull(p.status,'') <> '8796107276379'
group by 
       s.id, p.name
...