Abfrage über mehrere Tabellen

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

  • Abfrage über mehrere Tabellen

    Sorry bin mir nicht sicher ob mein Problem im SQL String oder der php abfrage liegt. Poste halt mal hier ins PHP Forum folgendes:

    Habe eine sql abfrage über drei tabellen:
    Code:
    SELECT pmk_film.*, pmk_genre.*, pmk_medium.* FROM film, genre, medium WHERE pmk_film.id_genre = 1
    Mit meiner while schleife
    PHP-Code:
    while ($zeile mysql_fetch_array($dvd)) 
    kann ich ja jetzt wunderbar mit
    PHP-Code:
    <?php echo "$zeile[titel]"?>
    auf meine werte in der pmk_film zugreifen.

    Meine Frage jetzt wie komm ich den an die zugehörige Variable der pmk_genre ? Versuche ich es mit $zeile[genre] bspw. bekomme ich immer nur den ersten tabellen wert ???

    Wo steckt mein Denkfehler ??? Danek für jeden Tip !!!

    cu

    Raik

    P.S. Tabellen stehen jetzt weiter unten.


    EDIT:
    php- und code-tags powered by Abraxax
    Zuletzt geändert von Medialution; 28.05.2003, 14:20.

  • #2
    wenn du statt der * die namen angibst, kannst du es korrekt ansprechen. teste es..


    --
    btw
    *VERSCHIEB* nach sql
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ich glaub er meint eher, wie er den zugehörigen Datensatz aus der Tabelle2 und 3 findet, oder?

      Also das Medium (aus Tab2), welches zu dem gerade angewählten Datensatz aus Tab1 gehört. Dafür mußt Du die Tabellen dann erstmal joinen.

      Code:
      SELECT tab1.*, tab2.*, tab3.* FROM tab1, tab2, tab3 WHERE tab1.id_m = 1 AND tab2.id = Tab1.id AND tab3.id = tab1.id
      wobei die .id nur ein Beispiel sind. Da muß halt das Feld hin, über das eine Beziehung zwischen den verschiedenen Tabellen besteht.

      Kommentar


      • #4
        Zweiter Select

        Ja ich meinte den zugehörigen Datensatz aus der Tabelle2 und 3. So wie ich es verstanden habe komme ich nicht um eine zweite Select (join) Anfrage ?!

        Oder kann ich es in einem verbauen ?

        Kommentar


        • #5
          Schon mal was von Alias Namen gehört ... ??
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            Re: Zweiter Select

            Original geschrieben von Medialution
            Oder kann ich es in einem verbauen ?
            siehe P2oldi's post.

            sinnvoll ist es jedoch mit einem LEFT JOIN oder so. das ist besser für die performance. dazu müsste man aber deine tabellenstruktur kennen, und wissen, welche felder in welcher beziehung zueinander stehen.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Tabellenstruktur

              So sehen die drei tabellen aus ...

              pmk_film
              id_film
              id_genre
              id_medium
              titel
              beschreibung


              pmk_genre
              id_genre
              genre

              pmk_medium
              id_medium
              medium

              Kommentar


              • #8
                dann sollte das so eigentlich hinhauen...

                PHP-Code:
                SELECT
                  tab1
                .titel
                  
                tab1.beschreibung
                  
                tab2.genre
                  
                tab3.medium
                FROM
                  pmk_film tab1
                  LEFT JOIN pmk_genre tab2 on tab1
                .id_genre tab2.id_genre
                  LEFT JOIN pmk_medium tab3 on tab1
                .id_medium tab3.id_medium
                WHERE tab1
                .id_genre 

                Kommentar


                • #9
                  du meinst

                  PHP-Code:
                  SELECT
                    pmk_film
                  .titel
                    
                  pmk_film.beschreibung
                    
                  pmk_genre.genre
                    
                  pmk_medium.medium
                  FROM
                    pmk_film 
                    LEFT JOIN pmk_genre  on pmk_film
                  .id_genre pmk_genre.id_genre
                    LEFT JOIN pmk_medium on pmk_film
                  .id_medium pmk_medium.id_medium
                  WHERE 
                  pmk_film
                  .id_genre 

                  Kommentar


                  • #10
                    sollte eides gehen, ich hatte in meinem Statement Aliase vergeben für die Tabellen

                    Kommentar


                    • #11
                      Perfekt

                      Ihr habt mir SUPER weitergeholfen. Nochmals Danke. Das Ergebnis gibt es dann unter
                      www.pulsmag.de/html/kinodvd

                      Kommentar

                      Lädt...
                      X