Rek2 -- Az Eljut-feladat. Tankönyv 10.2. Az Eljut-feladat. Rekurzió az SQL-ben
    Feladat:  Fejezzük ki WITH RECURSIVE utasítással, hogy mely városokba tudunk
    'DAL' (Dallas)-ból eljutni legfeljebb 3 átszállással és legfeljebb 5000 költségből.
   
   
    -- Ehhez egy kis segítség: Tankönyv 11.2 fejezetében az Eljut feladatra megadott
        SQL-1999 szabvány megoldás (csak papíron!)
            WITH RECURSIVE eljut (honnan, hova) AS
                  (SELECT honnan, hova FROM jaratok
             UNION
                  SELECT eljut.honnan, jaratok.hova FROM eljut, jaratok
                       WHERE eljut.hova = jaratok.honnan)
            SELECT hova FROM eljut WHERE honnan='DAL';
      
   
    -- Megoldás: Készítünk egy eljut(honnan, hova, atszallas, koltseg) munkatáblát,
    -- majd ennek az ideiglenes eljut tábla lekérdezésével kapjuk meg az eredményt:
     
    WITH RECURSIVE eljut(honnan, hova, atszallas, koltseg) AS
            (SELECT honnan, hova, 0 atszallas, koltseg FROM jaratok
        UNION
             SELECT eljut.honnan honnan, jaratok.hova hova, eljut.atszallas+1 atszallas,  
                 eljut.koltseg+jaratok.koltseg koltseg FROM eljut, jaratok
                 WHERE eljut.y = jaratok.honnan)
    SELECT DISTINCT hova FROM eljut WHERE honnan='DAL'
                  and atszallas<=3 and koltseg<5000;
   
    -- Ez az SQL-1999 szabvány szerinti WITH RECURSIVE, amit tudni kell
    -- a vizsgára papíron, de ezt ne próbálják meg az Oracle-ben, mert
    -- ott kicsit másként néz ki, de azt már nem  kell tudni a vizsgára.
    -- Ha valaki mégis futtatá, ahhoz egy kicsit át kell írnia Oracle-be:
    -- Adatok: http://people.inf.elte.hu/sila/eduAB/jaratok_tabla.txt
   
    WITH eljut(honnan, hova, atszallas, koltseg) AS
            (SELECT honnan, hova, 0 atszallas, koltseg FROM jaratok
        UNION ALL
             SELECT eljut.honnan honnan, jaratok.hova hova, eljut.atszallas+1 atszallas,  
                 eljut.koltseg+jaratok.koltseg koltseg FROM eljut, jaratok
                 WHERE eljut.hova = jaratok.honnan)
        SEARCH DEPTH FIRST BY honnan SET SORTING
        CYCLE honnan SET is_cycle TO 1 DEFAULT 0
     SELECT DISTINCT hova FROM eljut
     WHERE honnan='DAL' and atszallas<=3 and koltseg<5000;
     --- ezt persze nem kell tudni fejből, csak gépnél az Oracle doksiból.
     
 -- HF: Ahogyan a Rec1 feladatot megvalósítottuk Oracle PL/SQL-ben, ehhez
    a Rec2 feladathoz is készítsünk Eljut2(honnan, hova, atszallas, koltseg)
    táblát és a sorait a járatok tábla alapján PL/SQL programmal töltsük fel!