Join

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

  • Join

    Hi!

    Ich hab mir den Thread von MrHappi durchgekaut ebenso das von littleidiot.de Ich bin mir dessen Systematik fast vertraut, aber so ganz 100%tig blick ich es noch nicht. Da ich einen aktuellen Fall habe, dass ich 3 Tabellen aufeinmal abfragen muss, wäre ich demjenigen Dankbar, wenn er anhand meinem Beispiel, mir mal vormachen würde. Ich schätze mal, dass ich es dann besser checken werde!!

    Vielen Dank an denjenigen, der mir das vormacht!!!

    PHP-Code:

      
    #
      #
      #### Tabelle abfragen
       
    $result mysql_query "SELECT id,
                                       melder_id,
                                       verbrecher_id,
                                       comment,
                                       posting_id,
                                       forum_id,
                                       melder_ip,
                                       melder_browser,
                                       nickname_fr
                                FROM Forum_Report
                                WHERE forum_id=
    $_GET[f]
                                ORDER BY zeit" 
    );
                                  while ( 
    $userdaten mysql_fetch_array $result ) ) {
                                
    $melder_id $userdaten["melder_id"];
                                
    $verbrecher_id $userdaten["verbrecher_id"];
                                
    $comment $userdaten["comment"];
                                
    $posting_id $userdaten["posting_id"];
                                
    $forum_id $userdaten["forum_id"];
                                
    $melder_ip $userdaten["melder_ip"];
                                
    $melder_browser $userdaten["melder_browser"];
                                
    $nickname_fr $userdaten["nickname_fr"];}


    #
    #
    #
    #### User-Name:


     
    $result mysql_query "  SELECT nickname
                                FROM zonyuser
                                WHERE id ='
    $verbrecher'" );
                                  while ( 
    $userdaten mysql_fetch_array $result ) ) {
                                
    $nick_1 $userdaten["nickname"];

    }
    #
    #
    #
    ##### Beitrag-Daten

     
    $result mysql_query "SELECT id,
                                     nick,
                                     ip,
                                     browser,
                                     zeit1,
                                     zeit2,
                                     kategorie,
                                     area,
                                     forum_underid,
                                     beitrag,
                                     pin,
                                     thema,
                                     who,
                                     threadid
                              FROM Posts
                              WHERE id = '.
    $posting_id.'
                              ORDER BY zeit2
                              " 
    );
                                  while ( 
    $userdaten mysql_fetch_array $result ) ) {
                                
    $id $userdaten["id"];
                                
    $nick_2 $userdaten["nick"];
                                
    $ip $userdaten["ip"];
                                
    $browser $userdaten["browser"];
                                
    $zeit1 $userdaten["zeit1"];
                                
    $zeit2 $userdaten["zeit2"];
                                
    $kategorie $userdaten["kategorie"];
                                
    $area $userdaten["area"];
                                
    $forum_underid $userdaten["forum_underid"];
                                
    $beitrag $userdaten["beitrag"];
                                
    $pin $userdaten["pin"];
                                
    $thema $userdaten["thema"];
                                
    $who $userdaten["who"];
                                
    $threadid $userdaten["threadid"];

    EDIT:
    unnötige leerzeichen bis zum } entfernt.
    by Abraxax

    Zuletzt geändert von xManUx; 26.03.2004, 09:30.

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

  • #2
    in meinem thread werden auch drei tabellen abgefragt außerdem habe ich gerade keine lust mir die hundertmilliontausendmilliarden quellcodezeilen durchzulesen um dann eventeull zu wissen, welche daten du brauchst, wo die herkommen und wie die tabellen verknüpft
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Original geschrieben von mrhappiness
      in meinem thread werden auch drei tabellen abgefragt außerdem habe ich gerade keine lust mir die hundertmilliontausendmilliarden quellcodezeilen durchzulesen um dann eventeull zu wissen, welche daten du brauchst, wo die herkommen und wie die tabellen verknüpft
      welche daten? ja alle die hier stehen... die angabe bei der ersten abfrage kommt durch einen vorherigen link. also variablen übergabe
      Zuletzt geändert von xManUx; 26.03.2004, 09:26.

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #4
        na dann les ich mal alles...

        hast du die info welche tabelle mit welcher über welche spalte(n) vrknüpft ist auch da oben drin versteckt?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          na dann les ich mal alles...

          hast du die info welche tabelle mit welcher über welche spalte(n) vrknüpft ist auch da oben drin versteckt?

          Die $_GET[f] kommt von der vorherigen page, die 2 restlichen WHERE kommen von der ersten tabellen abfrage.

          Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
          sondern mit den Augen das Manual zu lesen.

          Kommentar


          • #6
            select a.id as a_id, ..., a.nickname_fr As a_..., b.nickname As b_..., c.id As c_... from
            forum_report a inner join zonyuser b on a.verbrecher_id=b.id inner join
            ...
            where a.forum_id = $_Get[f] ...

            die ... (incl. den 2. join) darfst du ergänzen

            EDIT:

            BTW: wenn du ganz sicher bist dass du nur 1 DS zurück geliefert bekommst, dann lass die while-Schleife weg.

            Zuletzt geändert von asp2php; 26.03.2004, 09:45.

            Kommentar


            • #7
              Original geschrieben von asp2php
              select a.id as a_id, ..., a.nickname_fr As a_..., b.nickname As b_..., c.id As c_... from
              forum_report a inner join zonyuser b on a.verbrecher_id=b.id inner join
              ...
              where a.forum_id = $_Get[f] ...

              die ... (incl. den 2. join) darfst du ergänzen

              EDIT:

              BTW: wenn du ganz sicher bist dass du nur 1 DS zurück geliefert bekommst, dann lass die while-Schleife weg.

              ´

              Check das zwar nicht ganz.. aber ich fang mal an..
              PHP-Code:
              <?
                                     SELECT a.id,
                                                  a.melder_id,
                                                  a.verbrecher_id as a_verbrecher,
                                                  a.comment,
                                                  a.posting_id as a_posting,
                                                  a.forum_id,
                                                  a.zeit as a_zeit,
                                                  a.melder_ip,
                                                  a.melder_browser,
                                                  a.nickname_fr,
                                                  b.id,
                                                  b.nickname,
                                                  c.id, 
                                                  c.nick,
                                                  c.ip,
                                                  c.browser,
                                                  c.zeit1,
                                                  c.zeit2,
                                                  c.kategorie,
                                                  c.area,
                                                  c.forum_underid,
                                                  c.beitrag,
                                                  c.pin,
                                                  c.thema,
                                                  c.who,
                                                  c.threadid
                                     FROM 
                                              Forum_Report a INNER JOIN zonyuser b ON
                                              a.verbrecher_id=b.id 
                                     WHERE 
                                              a.forum_id=$_GET[f]
                                     ORDER BY a_zeit

              ?>
              mkey.. und wie wäre es richtig?

              EDIT:

              vielleicht so?

              Zuletzt geändert von xManUx; 26.03.2004, 10:35.

              Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
              sondern mit den Augen das Manual zu lesen.

              Kommentar


              • #8
                1. du referenzierst im 2. join keine Tabelle -> Fehler
                2. Spaltenalias wäre von Vorteil, da z.B. id in jeder Tabelle auftaucht

                Kommentar


                • #9
                  Original geschrieben von asp2php
                  1. du referenzierst im 2. join keine Tabelle -> Fehler
                  2. Spaltenalias wäre von Vorteil, da z.B. id in jeder Tabelle auftaucht
                  könntest du mir das nicht vormachen?

                  Von Forum_Report will ich alle Spalten von der Zeile $GET_[f]
                  Von Posts, will ich alle spalten von zeile id = ( Forum_Report -> forum_id )
                  Von Zonyuser will ich die spalte nickname von zeile id = ( Forum_Report -> verbrecher )

                  Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                  sondern mit den Augen das Manual zu lesen.

                  Kommentar


                  • #10
                    den Syntax für den 1. Join hast du ja schon, machst das gleiche mit dem 2.
                    tutst einfach bitte. Vormachen ist nicht (mehr) drin, wenn dann nur noch
                    Korrektur

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      den Syntax für den 1. Join hast du ja schon, machst das gleiche mit dem 2.
                      tutst einfach bitte. Vormachen ist nicht (mehr) drin, wenn dann nur noch
                      Korrektur
                      kleine verständnisfrage:
                      was genau bewirkt das jetzt mit dem "as" und "inner join" im gegensatz zu left bzw. right join?? welche rolle spielt es, welche tab bei inner join steht? und wie gebe ich die spalten der 3 verschiedenen tabellen nacher aus?

                      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                      sondern mit den Augen das Manual zu lesen.

                      Kommentar


                      • #12
                        PHP-Code:

                        <?

                                               SELECT a.id,
                                                            a.melder_id,
                                                            a.verbrecher_id as a_verbrecher,
                                                            a.comment,
                                                            a.posting_id as a_posting,
                                                            a.forum_id,
                                                            a.zeit as a_zeit,
                                                            a.melder_ip,
                                                            a.melder_browser,
                                                            a.nickname_fr,
                                                            b.id,
                                                            b.nickname,
                                                            c.id, 
                                                            c.nick,
                                                            c.ip,
                                                            c.browser,
                                                            c.zeit1,
                                                            c.zeit2,
                                                            c.kategorie,
                                                            c.area,
                                                            c.forum_underid,
                                                            c.beitrag,
                                                            c.pin,
                                                            c.thema,
                                                            c.who,
                                                            c.threadid
                                               FROM 
                                                        Forum_Report a INNER JOIN zonyuser b ON
                                                        a.verbrecher_id=b.id 
                                                        Forum_Report a INNER JOIN Posts c ON a.posting_id=c.id
                                               WHERE 
                                                        a.forum_id=$_GET[f]
                                               ORDER BY 
                                                       a_zeit
                        so?

                        Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                        sondern mit den Augen das Manual zu lesen.

                        Kommentar


                        • #13
                          as ist ein Schlüsselwort um Alias zu definieren. Bsp:
                          select colName as a dann kannst du die Spalte mit a ansprechen

                          - INNER JOIN liefert die DS welche sowohl in linke Tabelle als auch in
                          rechten Tabelle bei denen die Bedingung in ON zutreffen.
                          - LEFT JOIN liefert ALLE DS in linke (LEFT) Tabelle und von der rechten nur
                          die, für die die Bedingung in ON zutreffen
                          - RIGHT JOIN ... na was macht der wohl

                          Ansonstens RTFM
                          Zuletzt geändert von asp2php; 26.03.2004, 10:50.

                          Kommentar


                          • #14
                            Original geschrieben von asp2php


                            Ansonstens RTFM
                            danke, dass hab ich endlich mal kapiert..

                            INNER JOIN = alle spalten DS lelft and right die mit on ( like where ) treffend sind.

                            left and right das selbe, nur die DB entweder left oder halt right..

                            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                            sondern mit den Augen das Manual zu lesen.

                            Kommentar


                            • #15
                              Original geschrieben von xManUx
                              danke, dass hab ich endlich mal kapiert..

                              INNER JOIN = alle spalten DS lelft and right die mit on ( like where ) treffend sind.

                              left and right das selbe, nur die DB entweder left oder halt right..
                              Ähm...

                              JOIN reagiert nur auf ON-Bedingung, WHERE filtert das gesamte Ergebnis
                              (was JOIN liefert)

                              das mit dem left und right muss du mir noch mal erklären, ich verstehe nur
                              Bahnhof
                              Zuletzt geändert von asp2php; 26.03.2004, 10:55.

                              Kommentar

                              Lädt...
                              X