Можете да се присъедините на location_distance
таблица два пъти с помощта на LEFT JOIN
и след това използвайте COALESCE()
функция, за да върне правилната стойност за разстояние
:
изберете ot.id, ot.fromlocid, ot.tolocid, ot.otherdata, coalesce(ld1.distance, ld2.distance) distancefrom other_table otleft join location_distance ld1 на ld1.fromLocid =ot.toLocid и ld1. toLocid =ot.fromLocid ляво присъединяване location_distance ld2 на ld2.toLocid =ot.toLocid и ld2.fromLocid =ot.fromLocid
Вижте SQL Fiddle с демонстрация
Това връща резултата:
<предварителен код>| ID | FROMLOCID | ТОЛОЦИД | ДРУГИ ДАННИ | РАЗСТОЯНИЕ |------------------------------------------------ ---| 12 | 5 | 3 | хххх | 70 || 22 | 2 | 4 | хххх | 63 || 56 | 8 | 6 | хххх | 15 || 78 | 3 | 5 | хххх | 70 |