Tüm duraklamaların bir uçuşa girmesi için bir açıklamada sorun yaşıyorum.Bir Uçuş Yolunda En Kısa Yol Nasıl Gidilir?-Tablo
Aşağıdaki gibi bir kaynak-havaalanı ve bir hedef-havaalanı olan uçuş rotaları olan bir tablom var. Şimdi A Havaalanı'ndan B noktasına en kısa uçuş rotalarını (en az durma) almak istiyorum, bu yüzden A'dan B'ye direkt bir yol yok, bu yüzden birkaç rotayı birbirine bağlamalıyım. i 18 ila 1403 gitmek istiyorum
Yani, örneğin, ben burada
(18 > 24 | 24 > 87 | 87 > 99| 99 > 1403)
bazı test verileri
(18 > 24 | 24 > 87 | 87 > 1403)
değil yolları almak istiyorum
src_apid | dst_apid
---------+----------
18 | 24
24 | 87
87 | 99
87 | 1403
99 | 18
99 | 1403
Denemem şunun gibi görünüyor:
WITH rejkabrest (
src_apid,
dst_apid
) AS (
SELECT
src_apid,
dst_apid
FROM
routes
WHERE
src_apid = 18
UNION ALL
SELECT
a.src_apid,
a.dst_apid
FROM
routes a
INNER JOIN rejkabrest b ON a.src_apid = b.dst_apid
WHERE b.dst_apid = 1403
) SELECT
src_apid, dst_apid
FROM
rejkabrest;
Ama bu yolla sadece kaynak-havalimanı 18'den başlayan tüm rotaları alıyorum. Ve eğer başka bir şekilde denersem, bir döngü problemi olur.
Umarım bana yardımcı olabilirsiniz. Şimdiden çok teşekkürler!
https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm –
[Bu yanıt] (http://stackoverflow.com/a/39119303/5089204) SQL-Server'tır sözdizimi, ancak size yol gösterebilir. Ana hile, ziyaret edilen tüm istasyonlarla büyüyen bir ipi taşımak ve bir yer tekrar ziyaret edildiyse, tekrarlamayı durdurmaktır. – Shnugo