Je suis un débutant avec SQL ...Champ d'affichage d'une autre table dans SQL
Maintenant, je veux afficher certains cas de AddrDistances de DevExpress CxGrid avec SQL.
Select Cast((DistanceAsMeters * 0.001) as Decimal(8,1)) DistanceAsKm, bold_id, created, fromAddress, toAddress
From AddrDistance
Where DistanceAsMeters = 0 and PseudoDistanceAsCostKm = 0
and not AddrDistance.bold_id in (select bold_id from DistanceQueryTask)
Order By Created Desc
Ce SQL fonctionne et le résultat est:
DistanceAsKM Bold_ID Created FromAddress ToAddress
0 134808 16.02.2010 121795 134570
0 121701 10.03.2010 120850 122991
Le résultat que je veux est la suivante:
DistanceAsKM Bold_ID Created FromAddress ToAddress
0 134808 16.02.2010 Kalmar Stockholm
0 121701 10.03.2010 Falkenberg Oslo
Ainsi, le nombre de lignes est juste, mais je veux remplacer le numéros dans FromAddress et ToAddress avec des chaînes d'une autre table. Les chiffres montrent ici est juste le boldid. Chaque objet de la base de données possède un boldid unique. Les adresses ci-dessus sont stockées dans la table Address et ont un champ City avec la colonne et un boldid comme une clé.
Que devrais-je écrire en SQL pour bien faire les choses? Y at-il quelque chose dans le CxGrid qui pourrait aider ici?
Cordialement
EDIT1: Après quelques expériences que je suis arrivé ce SQL qui semble fonctionner:
SELECT DistanceAsMeters, Bold_Id, Created, AddressFrom.CityName_CO as FromCity, AddressTo.CityName_CO as ToCity
FROM AddrDistance
LEFT JOIN Address AddressFrom ON AddrDistance.FromAddress = AddressFrom.Bold_Id
LEFT JOIN Address AddressTo ON AddrDistance.ToAddress = AddressTo.Bold_Id
Where DistanceAsMeters = 0 and PseudoDistanceAsCostKm = 0
and not AddrDistance.bold_id in (select bold_id from DistanceQueryTask)
Order By Created Desc
Merci beaucoup pour l'aide! Peter a obtenu la réponse car je pense que c'était le plus clair. BTW J'utilise InterBase 2009 et je pense qu'il utilise le dialecte SQL 3. Une différence est qu'il ne gère pas AS après JOIN.
Si l'FROMADDRESS ou toaddress sont annulable, ou il n'y a pas d'intégrité relationnelle vous devez utiliser une jointure externe 'GAUCHE OUTER JOIN Adresse AS AddressFrom ON AddrDistance.fromAddress = AddressFrom.AddressId GAUCHE OUTER JOIN Adresse AS AddressTo ON AddrDistance.toAddress = AddressTo.AddressId' –