Size: a a a

2019 June 05

D

Dmitriy in PHP fwdays
sql от GEOGUARD ?
источник

AN

Andrey Nosan in PHP fwdays
Пока в процессе
источник

D

Dmitriy in PHP fwdays
SELECT
   route, total_duration Duration
FROM
   ((SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city) route,
       s1.duration total_duration
   FROM
       flights s1
   WHERE
       s1.from_city = 'kh'
           AND s1.to_city = 'va') UNION (SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city, s2.to_city) route,
           (s1.duration + s2.duration) total_duration
   FROM
       flights s1
   INNER JOIN flights s2 ON s1.to_city = s2.from_city
       AND s1.from_city = 'kh'
       AND s2.to_city = 'va') UNION (SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city, s2.to_city, s3.to_city) route,
           (s1.duration + s2.duration + s3.duration) total_duration
   FROM
       flights s1
   INNER JOIN flights s2 ON s1.to_city = s2.from_city
       AND s1.from_city = 'kh'
   INNER JOIN flights s3 ON s3.from_city = s2.to_city
       AND s3.to_city = 'va'))
ORDER BY Duration , route
LIMIT 1
источник

D

Dmitriy in PHP fwdays
я такое решил и одобрили
источник

MN

Mariia Neimorovets in PHP fwdays
А можно условие задачи?
источник

DK

Dmitriy Kupriyanov in PHP fwdays
источник

P

Piter Se in PHP fwdays
источник

EB

Eugene Bogun in PHP fwdays
источник

P

Povilas in PHP fwdays
Dmitriy
SELECT
   route, total_duration Duration
FROM
   ((SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city) route,
       s1.duration total_duration
   FROM
       flights s1
   WHERE
       s1.from_city = 'kh'
           AND s1.to_city = 'va') UNION (SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city, s2.to_city) route,
           (s1.duration + s2.duration) total_duration
   FROM
       flights s1
   INNER JOIN flights s2 ON s1.to_city = s2.from_city
       AND s1.from_city = 'kh'
       AND s2.to_city = 'va') UNION (SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city, s2.to_city, s3.to_city) route,
           (s1.duration + s2.duration + s3.duration) total_duration
   FROM
       flights s1
   INNER JOIN flights s2 ON s1.to_city = s2.from_city
       AND s1.from_city = 'kh'
   INNER JOIN flights s3 ON s3.from_city = s2.to_city
       AND s3.to_city = 'va'))
ORDER BY Duration , route
LIMIT 1
здесь только с 2 пересадками, а по задаче может быть 3 ) но код красивый
источник

P

Povilas in PHP fwdays
у меня получилось такое чудо - https://pastebin.com/s5RtL9ue
источник

DK

Dmitry Khaperets in PHP fwdays
Dmitriy
SELECT
   route, total_duration Duration
FROM
   ((SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city) route,
       s1.duration total_duration
   FROM
       flights s1
   WHERE
       s1.from_city = 'kh'
           AND s1.to_city = 'va') UNION (SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city, s2.to_city) route,
           (s1.duration + s2.duration) total_duration
   FROM
       flights s1
   INNER JOIN flights s2 ON s1.to_city = s2.from_city
       AND s1.from_city = 'kh'
       AND s2.to_city = 'va') UNION (SELECT
       CONCAT_WS(' - ', s1.from_city, s1.to_city, s2.to_city, s3.to_city) route,
           (s1.duration + s2.duration + s3.duration) total_duration
   FROM
       flights s1
   INNER JOIN flights s2 ON s1.to_city = s2.from_city
       AND s1.from_city = 'kh'
   INNER JOIN flights s3 ON s3.from_city = s2.to_city
       AND s3.to_city = 'va'))
ORDER BY Duration , route
LIMIT 1
Бля.. Там можно с одним джоином и без вложенных запросов
источник

D

Dmitriy in PHP fwdays
Скинь запрос тогда.
источник

DK

Dmitry Khaperets in PHP fwdays
Приду домой, напишу запрос и кину
источник

ST

Stepan Tanasiychuk in PHP fwdays
>SELECT CONCAT(fl.from_city, ' - ', fl.to_city, ' - ', fl2.to_city) AS 'Route', (fl.duration + fl2.duration) AS 'Duration' FROM flights AS fl
LEFT JOIN flights AS fl2 ON fl.to_city = fl2.from_city
WHERE fl.from_city = "Kharkiv" AND fl2.to_city = "Vancouver"
ORDER BY Duration

в мене так вийшло
источник

EB

Eugene Bogun in PHP fwdays
@stfalcon В условии задачи сказано про три пересадки
источник

ST

Stepan Tanasiychuk in PHP fwdays
не більше ніж три
источник

ST

Stepan Tanasiychuk in PHP fwdays
видача

Kharkiv - Istanbul - Vancouver
820
Kharkiv - Kyiv - Vancouver
1460
Kharkiv - Lviv - Vancouver
1590
источник

ST

Stepan Tanasiychuk in PHP fwdays
є коротші варіанти?
источник

EB

Eugene Bogun in PHP fwdays
Ок, а если в к данным добавить Kharkiv Vancouver 1300 - Выведет ли он этот маршрут?
источник

VM

Volodymyr Melko in PHP fwdays
Stepan Tanasiychuk
>SELECT CONCAT(fl.from_city, ' - ', fl.to_city, ' - ', fl2.to_city) AS 'Route', (fl.duration + fl2.duration) AS 'Duration' FROM flights AS fl
LEFT JOIN flights AS fl2 ON fl.to_city = fl2.from_city
WHERE fl.from_city = "Kharkiv" AND fl2.to_city = "Vancouver"
ORDER BY Duration

в мене так вийшло
Может быть от 0 до 3 пересадок ;)
источник