MySQL - как получить NULL, если равенства не существует - PullRequest
1 голос
/ 12 августа 2010
CREATE TABLE Customer(  
customer_id INT NOT NULL,  
first_name VARCHAR(20),  
last_name VARCHAR(20),  
PRIMARY KEY (customer_id)  
);  
CREATE TABLE Payment(  
customer_id NOT NULL,  
year YEAR,  
payment_amount INT,  
FOREIGN KEY (customer_id) REFERENCES Customer(customer_id)  
);  

Вот запрос, который я использую:

SELECT Customer.first_name, Payment.year  
FROM Customer  
LEFT JOIN Payment  
ON Customer.customer_id = Payment.customer_id  
WHERE Payment.year = 2008;  

Теперь, скажем, у меня было три клиента Джон, Боб и Энн.Джон и Энн осуществили платежи в 2008 году, но Боб этого не сделал. Результат этого запроса:

имя_год года
Джон 2008
Энн 2008

но я хочу:

имя_имя года
Джон 2008
Энн 2008
Боб NULL

Так что я знаю, что мне нужна строка, которая говорит что-то вроде tenant_id, если такой оплаты за равенство нет.год = 2008, чем вернуть NULL, но я не уверен, как это сделать.Спасибо!

1 Ответ

4 голосов
/ 12 августа 2010
WHERE Payment.year = 2008;   

должно быть

AND Payment.year = 2008;  

ГДЕ применяется после JOIN, чтобы отфильтровывать NULL

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