Announcement

Collapse
No announcement yet.

Flughafensystem...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Flughafensystem...

    servuz leute...

    ich hab hier ne große db und die soll jetzt mit SQL/PHP ausgelesen werden bzw. es sollen abfragen erstellt werden...
    da ich nicht so sehr firm in SQL bin stellen sich mir einige fragen...
    .auf der startseite des flugbuchungssystems soll eine art anzeigetafel kommen mit allen flügen

    Airline / Abflughafen / Zielflughafen / Start / Dauer
    ---------------------------------------------------------------

    so in der art...das wäre bei mir ne riesige INNER JOIN ABFRAGE
    Fragen:

    1) wie kann ich die abfrage in PHP gestalte, gehts einfacher?
    2) wie bekomme ich Abflughafen und Zielflughafen als name aus Tabelle Location --> bekomme immer nur ID

    hier mal die abfrage:

    SELECT Airline.name AS Airline_name, Airport.location, Flight.name AS Flight_name, Flight.from, Flight.to, Flight.time, Flight.duration
    FROM (Airline INNER JOIN Plane ON Airline.[ID] = Plane.[airline]) INNER JOIN (Airport INNER JOIN Flight ON Airport.[ID] = Flight.[to]) ON Plane.[ID] = Flight.[plane];

    wäre schön, wenn mir jemand helfen könnte...

    mfg

  • #2
    Hallo,
    Originally posted by ntron View Post
    ...wäre schön, wenn mir jemand helfen könnte...
    dann solltest du auch die Strukturen der betroffenen Tabellen angeben, ansonsten könne wir hier nur raten.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Tabellen der DB

      --
      -- Tabellenstruktur für Tabelle `airline`
      --

      CREATE TABLE IF NOT EXISTS `airline` (
      `ID` int(11) NOT NULL auto_increment,
      `name` varchar(50) default NULL,
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;


      -- --------------------------------------------------------

      -- Tabellenstruktur für Tabelle `airport`
      --

      CREATE TABLE IF NOT EXISTS `airport` (
      `ID` int(11) NOT NULL auto_increment,
      `3cl` varchar(3) default NULL,
      `name` varchar(50) default NULL,
      `location` int(11) default '0',
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;


      --
      -- Tabellenstruktur für Tabelle `booking`
      --

      CREATE TABLE IF NOT EXISTS `booking` (
      `ID` int(11) NOT NULL auto_increment,
      `passenger` int(11) default '0',
      `flight` int(11) default '0',
      `seatnr` int(11) default '0',
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;



      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `class`
      --

      CREATE TABLE IF NOT EXISTS `class` (
      `ID` int(11) NOT NULL auto_increment,
      `class` varchar(50) default NULL,
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

      --

      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `flight`
      --

      CREATE TABLE IF NOT EXISTS `flight` (
      `ID` int(11) NOT NULL auto_increment,
      `name` varchar(50) default NULL,
      `from` int(11) default '0',
      `to` int(11) default '0',
      `plane` int(11) default '0',
      `time` datetime default NULL,
      `duration` datetime default NULL,
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=29 ;



      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `location`
      --

      CREATE TABLE IF NOT EXISTS `location` (
      `ID` int(11) NOT NULL auto_increment,
      `city` varchar(50) default NULL,
      `country` varchar(50) default NULL,
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=48 ;



      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `passenger`
      --

      CREATE TABLE IF NOT EXISTS `passenger` (
      `ID` int(11) NOT NULL auto_increment,
      `vorname` varchar(50) default NULL,
      `name` varchar(50) default NULL,
      `location` int(11) default '0',
      `street` varchar(50) default NULL,
      `blz` decimal(8,0) default '0',
      `kto` decimal(10,0) default '0',
      PRIMARY KEY (`ID`),
      KEY `ID` (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;


      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `plane`
      --

      CREATE TABLE IF NOT EXISTS `plane` (
      `ID` int(11) NOT NULL auto_increment,
      `name` varchar(50) default NULL,
      `factory` int(11) default '0',
      `airline` int(11) default '0',
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;


      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `planetype`
      --

      CREATE TABLE IF NOT EXISTS `planetype` (
      `ID` int(11) NOT NULL auto_increment,
      `manufacturer` varchar(50) default NULL,
      `type` varchar(50) default NULL,
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;


      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `seat`
      --

      CREATE TABLE IF NOT EXISTS `seat` (
      `ID` int(11) NOT NULL auto_increment,
      `number` int(11) default '0',
      `plane` int(11) default '0',
      `class` int(11) default '0',
      `smoker` tinyint(4) default '0',
      `window` tinyint(4) default '0',
      PRIMARY KEY (`ID`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

      -

      Comment


      • #4
        keine hilfe

        nimmand einen plan oder soll ich vllt mal das erd noch mit rein machen?!

        Comment


        • #5
          Originally posted by ntron View Post
          1) wie kann ich die abfrage in PHP gestalte, gehts einfacher?
          Ich glaube nicht, dass es viel einfacher geht. Die Abfrage ist doch schon ganz gut.

          Originally posted by ntron View Post
          2) wie bekomme ich Abflughafen und Zielflughafen als name aus Tabelle Location --> bekomme immer nur ID
          Du musst noch zwei Inner Joins machen. Dabei benutzt du zweimal die Tabelle location und setzt location.Id einmal mit Flight.from und einmal mit Flight.to gleich, um jeweils location.country abrufen zu können.

          -------------------------------------------------------------------
          [EDIT]


          Ich glaube ich habe mich verguckt:

          Flight.to/.from = Airport.id -> Airport.location = location.id -> location.country
          Zuletzt editiert von Novi; 01.11.2009, 16:46.
          "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

          Viele Grüße Novi

          Comment


          • #6
            Hi,

            ohne Garantie, das es funktioniert:

            [highlight=sql]
            SELECT Airline.name AS Airline_name, Flight.name AS Flight_name, Flight.`from`, Flight.`to`, Flight.time, Flight.duration, Location_to.country, Location_from.country
            FROM Airline
            INNER JOIN Plane ON Airline.ID = Plane.airline
            INNER JOIN Flight ON Plane.ID = Flight.plane
            INNER JOIN Airport AS Airport_to ON Airport_to.ID = Flight.`to`
            INNER JOIN Airport AS Airport_from ON Airport_from.ID = Flight.`from`
            INNER JOIN Location AS Location_to ON Airport_to.ID = Location_to.ID
            INNER JOIN Location AS Location_from ON Airport_from.ID = Location_from.ID
            [/highlight]
            "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

            Viele Grüße Novi

            Comment


            • #7
              danke erstmal für die antwort, aber der abfluhafen bzw. zielflughafen hat immernoch nur die id drin stehen und nicht die location, als name :-(

              mfg

              Comment


              • #8
                Location_to.country und Location_from.country müssten doch die Namen der Städte zurückgeben oder?

                Ansonsten nenne mir bitte aus welcher Tabelle, welcher Name ausgelesen werden soll.
                Zuletzt editiert von Novi; 01.11.2009, 23:28.
                "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

                Viele Grüße Novi

                Comment


                • #9
                  sorry...
                  mein fehler...geht jetzt...dank sehr...werden sicher später noch ein paar fragen kommen...

                  mfg

                  Comment


                  • #10
                    und schon besteht die nächste klärung bzw. frage

                    ich habe jetzt in einem auswahlfeld alle möglichen abflughäfen aufgelistet
                    und möchte dann nur die ausgewählten abflughäfen anzeigen lassen...


                    meine variablen

                    <?php

                    $abflughafen = $_REQUEST["abflughafen"];
                    $zielflughafen = $_REQUEST["zielflughafen"];
                    $personen = $_REQUEST["personen"];
                    $fluggesellschaft = $_REQUEST["fluggesellschaft"];

                    ?>


                    mein php von dem auswahlfeld lautet

                    <?PHP include ("db.php");
                    $query = "SELECT ID, name FROM airport ";
                    echo mysql_error();
                    $result = mysql_query($query);
                    while ($line = mysql_fetch_array($result)) { ?>
                    <option name="abflughafen" value="<?PHP echo $line[ID];?>">
                    <?PHP echo $line[name];?></option>
                    <?PHP

                    mein abfrage

                    ...
                    INNER JOIN Airport AS Airport_from ON Airport_from.ID = '" . $abflughafen . "'
                    ...
                    rest der abfrage wie oben schon...
                    aber ich glaube das diese varianten völliger blödsinn ist

                    aber es kommt nix sinnvolles raus...
                    wo ist da bloß mein denkfehler...wenn ich z.b. dresden auswähle soll der doch die id von airport.id = mit meiner ausgewälten setzten...
                    hat jemand wieder nen schönen vorschlag für mich?

                    Comment


                    • #11
                      Dein Denkfehler ist Folgender: Wenn du die Id von Airport auf einen bestimmten Wert einschränkst, wirkt sich das nicht auf die Flight, Plane bzw. Airline Tabelle aus. Die vorherige Bedingung, dass Airport_to.ID = Flight.`to`sein muss entfällt.

                      So und wieder ohne Garantie :

                      [highlight=sql]
                      SELECT Airline.name AS Airline_name, Flight.name AS Flight_name, Flight.`from`, Flight.`to`, Flight.time, Flight.duration, Location_to.country, Location_from.country
                      FROM Airline
                      INNER JOIN Plane ON Airline.ID = Plane.airline
                      INNER JOIN Flight ON Plane.ID = Flight.plane
                      INNER JOIN Airport AS Airport_to ON Airport_to.ID = Flight.`to`
                      INNER JOIN Airport AS Airport_from ON Airport_from.ID = Flight.`from` AND Airport_from.ID = '" .(int) $abflughafen . "'
                      INNER JOIN Location AS Location_to ON Airport_to.ID = Location_to.ID
                      INNER JOIN Location AS Location_from ON Airport_from.ID = Location_from.ID
                      [/highlight]
                      "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

                      Viele Grüße Novi

                      Comment


                      • #12
                        irgendwas ist da noch nicht ganz richtig...

                        ich such schon wieder ewig nach nem fehler aber irgendwo ist ein JOIN FALSCH...

                        Beispiel

                        als Abflughafen hab ich Braunschwig gewählt...

                        Nummer/Airline/Abflughafen/Flugname/Zielflughafen/Start/Dauer
                        -----------------------------------------------------------------------------------
                        1/Lufthansa/Altenburg/BRU-KOE/Braunschweig/2001-10-09 17:45:00/1899-12-30 01:30:00

                        wie man sieht ist es beim flugnamen ok...aber der zielflug hafne und abflughafen ist ungleich dem flugnamen???
                        die abfrage ist noch die gleich von oben...
                        wo ist da der hund begraben?

                        Comment


                        • #13
                          Vielleicht geht es so:

                          [highlight=sql]
                          SELECT Airline.name AS Airline_name, Flight.name AS Flight_name, Flight.`from`, Flight.`to`, Flight.time, Flight.duration, Location_to.country, Location_from.country
                          FROM Airline
                          INNER JOIN Plane ON Airline.ID = Plane.airline
                          INNER JOIN Flight ON Plane.ID = Flight.plane
                          INNER JOIN Airport AS Airport_to ON Airport_to.ID = Flight.`to`
                          INNER JOIN Airport AS Airport_from ON Airport_from.ID = Flight.`from`
                          INNER JOIN Location AS Location_to ON Airport_to.ID = Location_to.ID
                          INNER JOIN Location AS Location_from ON Airport_from.ID = Location_from.ID
                          WHERE Airport_from.ID = '" .(int) $abflughafen . "'
                          [/highlight]
                          "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

                          Viele Grüße Novi

                          Comment


                          • #14
                            jo hab es hinbekommen danke...

                            Comment


                            • #15
                              flugplan erst anzeigen???

                              hab da wieder ein problem und zwar möchte ich, wenn die seite aufgerufen wird
                              erst den kompletten flugplan anzeig, aber durchdas ja
                              "INNER JOIN ... AND ... = meineVariable"
                              da wird ja erst was angezeigt wenn ich ne auswahl treffe und poste...
                              wie kann ich die variablen vorher so belegen das sie alle annehmbare warte aus der db besitzen...oder geht das noch einfacher...
                              ach und...
                              das wiürde dann auch für die auswahl "beliebig" gelten...also wenn ich keine exakte auswahl mache...

                              mfg

                              Comment

                              Working...
                              X