Tri des tables via l'éditeur de requêtes et la réception des lignes en double

Soirée tous (matin pour certains d'entre nous),

Tout d'abord, je suis nouveau à SQL comme vous pouvez le dire à partir des messages précédents. J'essaie de m'enseigner et c'est difficile, mais amusant et enrichissant en même time.

Je suis en train de déconner avec mes tables existantes que j'ai créées et j'essaie de comprendre comment combiner deux tables en une seule requête, sortinger une colonne d'abord par ordre croissant, puis une autre colonne par ordre alphabétique.

Ma table Customer se compose de 4 lignes, avec 3 colonnes (Customer ID, Customer Name, CustomerAddressID) et ma deuxième table, Address se compose de 4 lignes et 5 colonnes (AddressID, Street, City, State, ZipCode)

J'ai essayé quelques manières de faire ceci mais je rencontre quelques problèmes.

SELECT [CustomerName],[Street],[City],[State],[ZipCode] FROM Customer,Address ORDER BY ZipCode ASC, CustomerName; 

Le code ci-dessus combine tout en un résultat, ce qui est fantastique, mais je me retrouve avec 16 lignes. Les 4 premières lignes montrent le nom du client dans l'ordre alphabétique, ce que je veux. Le rest des colonnes sont cependant tous des duplicates. J'ai joint une capture d'écran de mes deux tentatives d'interroger datatables correctes. Cette capture d'écran est les deux tentatives que j'ai faites pour essayer de faire fonctionner ça

S'il vous plaît noter que j'ai keys primaires configurés comme AddressID, CustomerID et une configuration de key étrangère comme CustomerAddressID. Je ne suis pas sûr si ceux-ci doivent être inclus dans ma requête pour aider à sortinger les informations.

J'en ai eu assez de me bash la tête contre le mur en essayant de comprendre cela. J'ai consulté à peu près tous les guides que je peux find et je n'arrive tout simplement pas à le faire fonctionner.

Toute orientation serait appréciée.

Je vous remercie,

Jason

Modifier ** (Voici mes instructions INSERT d'origine pour datatables)

 INSERT INTO [dbo].[Address] ([AddressID] ,[Street] ,[City] ,[State] ,[ZipCode]) VALUES (1,'2400 Broadway','New York','NY',11201), (2,'320 21st Street','Atlanta','GA',30322), (3,'439 Skyline Blvd','Seattle','WA',98101), (4,'56 Park Avenue','Dallas','TX',75201); GO INSERT INTO [dbo].[Customer] ([CustomerID] ,[CustomerName] ,[CustomerAddressID]) VALUES (1,'Western Supply Co.',2), (2,'Jake Harper',4), (3,'Elizabeth Harper',1), (4,'Abacus Consulting',3); GO 

EDIT 2 *

Merci Ughai pour l'aide rapide. J'ai joué avec et je l'ai compris. Fonctionne parfaitement maintenant:

 SELECT Customer.CustomerName, Address.Street, Address.City, Address.State, Address.ZipCode FROM Customer INNER JOIN Address ON Customer.CustomerAddressID=Address.AddressID ORDER BY ZipCode ASC, CustomerName ASC; 

Vous avez écrit une requête qui fait simplement une jointure croisée. Essayez ci-dessous la requête pour get le bon résultat.

 SELECT C.CustomerName, A.Street, A.City, A.State, A.ZipCpde FROM Customer C INNER JOIN Address A ON C.CustomerAddressID = A.AddressID ORDER BY A.ZipCode ASC, C.CustomerNAme; 

Lorsque vous voulez get le résultat de deux tables ou plus, vous utilisez toujours JOIN. La clause JOIN renvoie toujours le résultat concis.

Essaye ça

 SELECT c.[CustomerName],a.[Street],a.[City],a.[State],a.[ZipCode] FROM Customer c INNER JOIN Address a ON a.AddressID = c.CustomerAddressID ORDER BY a.ZipCode ASC, c.CustomerName;