2010-05-22 4 views
0

J'ai deux tables, Customer et CustomerPhone. Le client a généralement plusieurs numéros de téléphone, donc quand j'exécute une déclaration select sur le client 101, j'obtiendrai plusieurs enregistrements en raison des multiples numéros de téléphone.Comment sélectionner plusieurs enregistrements à partir de plusieurs tables à la fois

Tous les champs "Téléphone" et "Fax" appartiennent à la table CustomerPhone. Ils sont considérés comme deux enregistrements dans la table CustomerPhone, tandis que les autres champs se rapportent à la table Customer, qui est un enregistrement unique.

Que dois-je faire pour remplir le champ Téléphone et Fax dans ce cas? Dois-je d'abord exécuter une instruction select sur CustomerPhone, puis exécuter une instruction select sur le client?

+0

SQL Server/C# /. NET/T-SQL n'ont pas besoin d'être dans le titre car ils sont dans les balises. –

+0

Vous avez raison - je m'excuse pour le titre trompeur – peace

Répondre

2

Je devine que votre table CustomerPhone ressemble à quelque chose comme

CustomerPhone 
CustomerID int 
Number varchar 
PhoneType phone | fax 

Il semble que l'interface utilisateur permet juste un téléphone régulier et numéro de fax. Si tel est le cas, et le client ne dispose que d'au plus un téléphone, un fax (mais peut avoir aucun) soit un indice unique sur CustomerID/PHONETYPE dans CustomerPhone, vous pouvez récupérer toutes les informations comme une requête:

SELECT c.*, phone.Number, fax.Number FROM Customer c 
LEFT JOIN CustomerPhone phone ON phone.CustomerID=c.CustomerID 
LEFT JOIN CustomerPhone fax = fax.CustomerID=c.CustomerID 
Questions connexes