MySQL - поиск значений NULL - PullRequest
0 голосов
/ 14 декабря 2011

Я протестировал странный запрос, который включает в себя поиск несуществующих записей.

В двух словах, у меня есть 3 tables: tbl_customers tbl_customers_notes tbl_customers_pipelines

Клиенты и заметки довольно очевидны, а конвейеры - нет.По сути, конвейеры - это то, что администраторы назначают одному customerid.

Вот структура таблицы для конвейеров:

ID |кастомерид |adminid |

Мне не нужно было создавать столбец ID, но я все равно это сделал, и он автоматически увеличивается.

Каждая запись клиента начинается без присоединения к конвейерузаписей.Таким образом, он пуст при первоначальном создании customerid.Если я хочу назначить администраторов для управления этим новым customerid и просто добавить запись для каждого adminid:

ID  | customerid | adminid
---------------------------
1   |    45      |   6
2   |    45      |   8
3   |    45      |   10

Это означает, что customerid: 45 имеет 3 назначенных adminid.
(кстати, adminid похожиsales ppl)

У меня есть запрос ниже, который позволяет мне искать customerid's, в котором отсутствуют заметки от конкретного adminid.И это прекрасно работает:

SELECT c.*
FROM `tbl_customers` c 
LEFT JOIN `tbl_customers_pipelines` cp ON c.customerid = cp.customerid 
WHERE c.customerid 
          NOT IN(SELECT n.customerid 
                 FROM `tbl_customers_notes` n 
                 WHERE n.datesubmitted BETWEEN '2011-12-01 14:00:00' 
                 AND '2011-12-03 13:59:59' 
                 AND n.categoryid IN(10)
                )

AND cp.adminid = 855 

Вы заметите, что я выполняю подзапрос после предложения WHERE.И это работает как ожидалось.Я отображаю только записи клиентов, которые имеют определенные примечания и имеют определенный adminid в таблице конвейеров.

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

Моя единственная мысль была заменить «AND cp.adminid = 855» на «AND ISNULL (cp.ID)» *

И это не дает результатов.Но записи действительно есть.Так что запрос просто выключен.Кто-нибудь видит что-то, чего мне не хватает?

1 Ответ

5 голосов
/ 14 декабря 2011

Попробуйте:

AND cp.ID IS NULL

вместо

AND cp.adminid = 855
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...