2017-09-30 4 views
1

J'ai deux tables: Clients et Commandes. Je fais une jointure gauche des clients et commandes sur la colonne CustomerID qui est la clé primaire dans les clients et la clé étrangère dans les commandes.SQL - impossible d'effectuer un comptage distinct lors de la jonction de deux tables

  1. Lorsque je liste CustomerID après l'avoir joint, j'obtiens la liste comme prévu.
  2. Lorsque je compte le nombre de CustomerID, je reçois à nouveau le nombre d'enregistrements que j'attends.
  3. Lorsque j'utilise un nombre distinct pour CustomerID, j'obtiens une erreur.

1.

select Customers.CustomerID as list 
from Customers left join Orders on Customers.CustomerID = Orders.CustomerID 
where Customers.CustomerID = 4; 

2.

select count(Customers.CustomerID) as numRecord 
from Customers left join Orders on Customers.CustomerID = Orders.CustomerID 
where Customers.CustomerID = 4; 

3.

select count(distinct (Customers.CustomerID)) as numRecord 
from Customers left join Orders on Customers.CustomerID = Orders.CustomerID 
where Customers.CustomerID = 4; 

Je ne comprends pas où est l'erreur. Toute aide serait appréciée. L'erreur:

Error in SQL: 
Syntax error (missing operator) in query expression 'count(distinct Customers.CustomerID)'. 
+0

qui DB que vous utilisez? – scaisEdge

+0

Je cours juste les requêtes sur ce lien: https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner – prog

Répondre

1

Vous n'avez pas besoin() autour Customers.CustomerID en nombre (distincts ..)

select count(distinct Customers.CustomerID) as numRecord 
from Customers 
left join Orders on Customers.CustomerID = Orders.CustomerID 
where Customers.CustomerID = 4; 
+0

même sans(), il y a une erreur. Je met() pour vérifier s'il n'y a pas d'erreur – prog

+0

puis afficher le message d'erreur .. – scaisEdge

+0

S'il vous plaît vérifier Erreur. La base de données provient de www.w3schools.com. Le lien pour la base de données est: https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner – prog