Je fais des requêtes de pratique pour améliorer mes compétences SQL (je suis un débutant) et j'ai rencontré ce problème que j'ai besoin d'aide pour utiliser la base de données Northwind. La requête demandée devrait:requête de comparaison SQL
Donner le nom des employés et la ville où ils vivent pour les employés qui ont vendus à des clients dans la même ville.
Ce que j'ai écrit pour c'était:
USE Northwind;
SELECT DISTINCT FirstName, LastName, e.City
FROM Employees e
INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID
INNER JOIN Customers c ON o.CustomerID = c.CustomerID
INNER JOIN Customers ON c.City = e.City
WHERE e.City = ANY(SELECT Customers.City FROM Customers);
Je suis revenu 6 employés, mais je ne suis pas sûr qu'ils sont corrects et je crois que ma déclaration est le WHERE mauvais aussi bien. En gros, ma question est la suivante: est-ce que j'utilise les bonnes instructions de jointure et comment puis-je filtrer les résultats avec l'instruction WHERE? Je ne sais pas exactement comment comparer un enregistrement spécifique avec d'autres enregistrements. Venant d'un arrière-plan Java, je suis habitué aux boucles for-loops qui peuvent vérifier chaque "objet" individuel (enregistrement) avec un champ spécifique d'un autre "objet". Dans ce cas, je me demande comment je peux vérifier l'attribut City de chaque enregistrement de la table Employees avec l'attribut City des enregistrements de la table Customers. Tout conseil est apprécié, merci!
Vos jointures ne sont pas correctes, car vous vous joignez deux fois à la table Clients. Changez 'INNER JOIN Customers ON' en' AND' et débarrassez-vous de la clause WHERE et vous devriez être bon. – Welbog