Я новичок с SQL ...
Теперь я хочу отобразить некоторые экземпляры AddrDistances из DevExpress CxGrid с 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
Этот SQL работает, и результат:
DistanceAsKM Bold_ID Created FromAddress ToAddress
0 134808 16.02.2010 121795 134570
0 121701 10.03.2010 120850 122991
Результат, который я хочу получить, таков:
DistanceAsKM Bold_ID Created FromAddress ToAddress
0 134808 16.02.2010 Kalmar Stockholm
0 121701 10.03.2010 Falkenberg Oslo
Итак, количество строк правильное, но я хочу заменить числа в FromAddress и ToAddress строками из другой таблицы. Цифры показывают здесь только жирный шрифт.
Каждый объект в базе данных имеет уникальный жирный шрифт.
Указанные выше адреса хранятся в таблице Address и имеют поле City с колонкой и полужирным шрифтом в качестве ключа.
Что я должен написать в SQL, чтобы получить это право? Есть ли в CxGrid что-то, что могло бы помочь здесь?
Привет
EDIT1: После некоторых экспериментов я получил этот SQL, который, кажется, работает:
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
Большое спасибо за помощь!
Питер получил ответ, так как я думаю, что это было наиболее ясно.
Кстати, я использую InterBase 2009 и думаю, что он использует диалект SQL 3. Одно из отличий было то, что он не обрабатывает AS после JOIN.