Join über 3 Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Join über 3 Tabellen

    hallo leute,

    joins (das leidige thema, sorry ) sind etwas relativ neues für mich und nun ist eine abfrage über 3 tabellen nötig, die mich ziemlich beschäftigt.

    Die daten werden nach einer Abfrage generiert, die Daten mittels Ajax im Hintergrund geldaden. In erster Linie sollen alle Hotels gelistet werden, dh. jeder Betrieb in dieser Form (jetzt mal für testzwecke ):

    db ID
    name
    strasse
    plz
    ort
    bundesland
    www
    telefon
    fax
    kategorie
    sterne

    im grunde sieht die db so aus, liste natürliche nur die relevanten daten für mein problem:

    tabelle I >> hotels:
    hotel_id

    tabelle II >> kategorien:
    hotel_id
    kategorie_id

    tabelle III >> kategorien_namen:
    kategorie_id
    bezeichnung

    es ist ja kein problem die daten auszulesen, bis auf die kategorie an die komm ich nicht..

    SELECT * FROM hotels,kategorien WHERE hotels.hotel_id=kategorien.hotel_id

    das listet mir die betriebe, mehrfach, also wenn einem betrieb mehrere kategorien zugewiesen wurden.....aber die bezeichnung der kategorie fehlt. ich schaffe es nicht die dritte tabelle miteinzubeziehen.

    die struktur der db...ist so notwendig, zwecks mehrsprachigkeit und so. ich hoffe auf hilfe...danke und lg
    Zuletzt geändert von baryo; 14.04.2008, 10:23.
    erst das fressen, dann die moral

  • #2
    Du zitierst den Titel von diesem Thread und wendest ihn nicht ansatzweise an? Das kann doch eigentlich nicht sein.

    Kommentar


    • #3
      hallo,

      naja ganz einfach weil ich nicht weiß wie ich das statement zusammensetzen muss sonst würd ichs ja machen.

      brauch das erstemal join und das über drei tabellen, irgendein statement das nicht funkt brauch ich ja nicht posten.

      außerdem du weißt ja wie das ist wenn mann das mit vorgeschriebenem code probiert, klappt meistens nicht. um das zu verstehen muss ich es auf das beispiel beziehen können.

      lg,
      Zuletzt geändert von baryo; 14.04.2008, 10:45.
      erst das fressen, dann die moral

      Kommentar


      • #4
        brauch das erstemal join und das über drei tabellen, irgendein statement das nicht funkt brauch ich ja nicht posten.
        Doch, generell sollst du hier sehr wohl deine Ansätze posten, damit alle anderen auch sehen, dass du es probiert hast und welche Probleme dabei auftreten.

        Aber lass uns keine Grundsatzdiskussion starten. Über die Suche solltest du ja bereits mitbekommen haben, dass ein bisschen Eigeninitiative schon gefragt ist.

        Im übrigen bin ich der Meinung, dass Happy das Thema LEFT JOIN doch recht gut rüber gebracht hat.

        EDIT:
        außerdem du weißt ja wie das ist wenn mann das mit vorgeschriebenem code probiert, klappt meistens nicht. um das zu verstehen muss ich es auf das beispiel beziehen können.
        Ja, und genau das sollst du auch versuchen. Wenns mit 3 Tabellen auf Anhieb nicht klappt, dann setz es erstmal mit zweien um. Stück für Stück erlernen und verstehen

        Zuletzt geändert von TobiaZ; 14.04.2008, 10:49.

        Kommentar


        • #5
          alles klar,

          danke so weit. werd mal auf eigeninitiative setzen....

          lg,
          erst das fressen, dann die moral

          Kommentar


          • #6
            probier mas halt nochmal,

            in der dritten tabelle gibt es also:
            kategorie_id
            sprach_code
            bezeichnung


            mein statement

            PHP-Code:
            "SELECT hotels.*, kategorien_namen.bezeichnung FROM

            (hotels WHERE kategorie LIKE '"
            .$s."' INNER JOIN kategorien ON hotels.hotel_id = kategorien.hotel_id)

            INNER JOIN kategorien_namen ON kategorien.kategorie_id = kategorien_namen.kategorie_id

            WHERE kategorien_namen.sprach_code LIKE '"
            .de."'", &$anzahl 


            ...vl jetzt?

            ich denk mir ja das joins ein leidiges thema sind und ständig gepostet werden aber wenn ich das statement habe, bin ich so weit das alle anderen von selber laufen.

            lg und sorry wegen vorher,
            Zuletzt geändert von baryo; 15.04.2008, 08:24.
            erst das fressen, dann die moral

            Kommentar


            • #7
              hallo,


              es klappt mit dem statement so weit, dass ich alle betriebe aus der db auslesen kann....aber wenn jetzt ein weiterer parameter dazukommt sprich:

              WHERE sterne LIKE '".$s."'

              wenn ich zb meine Ergebnisse weiter einschränken will "$s" steht für eine bestimme auswahl einer kategorie...steh ich an...


              Zuletzt geändert von baryo; 15.04.2008, 07:43.
              erst das fressen, dann die moral

              Kommentar


              • #8
                hallo,

                ich habs ;-)

                PHP-Code:
                "SELECT hotels.*, kategorien_namen.bezeichnung FROM

                (hotels INNER JOIN kategorien ON hotels.hotel_id = kategorien.hotel_id)

                INNER JOIN kategorien_namen ON kategorien.kategorie_id = kategorien_namen.kategorie_id

                WHERE hotels.sterne LIKE '"
                .$s."' AND kategorien_namen.sprach_code LIKE '".de."'", &$anzahl 
                und dank @mrhappiness für deine unglaubliche güte...thread hat mir geholfen.

                lg ans forum,
                erst das fressen, dann die moral

                Kommentar

                Lädt...
                X