2010-08-11 2 views
1
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) 
); 

Voici la requête que je utilise:MySQL - Comment obtenir NULL si l'égalité n'existe pas

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

Maintenant, disons que j'avais trois clients John, Bob et Anne. John et Anne ont fait des paiements en 2008, mais Bob ne pas le résultat de cette requête est:

prenom année
John 2008
Anne 2008

mais ce que je veux est:

prenom année
John Anne 2008
Bob NULL

Je sais que je besoin d'un ligne qui dit quelque chose comme pour un locataire_id s'il n'y a pas une telle égalité payment.year = 2008 que de retourner NULL, mais je ne suis pas sûr de savoir comment faire cela. Merci!

Répondre

4
WHERE Payment.year = 2008; 

devrait être

AND Payment.year = 2008; 

où est appliqué après la jointure il filtre le NULL

+0

Merci pour le heads up! Je ne savais pas ça sur O WH. – MCH

Questions connexes