Multi INNER JOIN

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

  • Multi INNER JOIN

    PHP-Code:
    $_sql->query("SELECT a.*, b.username AS updater
                  
                  FROM "
    .$_sql->prefix()."sheets a
                  
                  INNER JOIN "
    .$_sql->prefix()."participants b ON a.updater_id = b.user_id
                    
                  WHERE a.sheet_id = "
    .$_GET['quizid'].""); 
    Ich hole mir updater_id aus Tabelle a, suche in Tabelle b nach dem zuzuordnenden Benutzernamen und speicher diesen als updater.

    [COLOR=red]Genauso möchte ich creator_id aus Tabelle a nehmen, und in Tabelle b nach dem zuzuordnenden Benutzernamen suchen und diesen creator abspeichern.[/COLOR]

    Aber wie packe in 2 Inner Joins in eine SQL-Anweisung?
    Zuletzt geändert von uschi; 03.07.2005, 18:50.

  • #2
    Gibt es denn eine 1:1 Beziehung zwischen updater_id und creator_id? Vom Namen her eher nicht.
    Dann würde ich einfach zwei Queries hintereinander ausführen.

    Wenns unbedingt in einer sein muß, dann versuche
    PHP-Code:
    $sql1 "SELECT ..."  // die erste Query (updater_id)
    $sql2 "SELECT ..."  // die zweite Query (creator_id)
    $_sql->query("SELECT ($sql1) AS updater, ($sql2) AS creator"); 

    Kommentar


    • #3


      Was willst du?? Willst Du Deinen JOIN erweitern(SELECT) oder willst du Einträge 'abspeichern' (INSERT) über einen JOIN ?!

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

      Kommentar


      • #4
        in tab 1:

        id = 10 | username = "paul"
        id = 13 | username = "petra"

        in tab2:

        creator_id = 10 (=> also paul), updater_id = 13 (=> also petra)



        also, ich will mit einem schlag - also in einer sql anweisung der creator_id und updater_id aus tab2 den entsprechenden usernamen aus tab 1 zuordnen...

        Kommentar


        • #5
          Ups, ich nahm an mit "abspeichern" meint er "AS updater".

          Kommentar


          • #6
            OffTopic:
            dachte aber dass es oben ganz ok erklärt ist...

            Kommentar


            • #7
              PHP-Code:
              $_sql->query("SELECT a.*, b.username AS updater, c.username AS creator
                            
                            FROM "
              .$_sql->prefix()."sheets a
                            
                            INNER JOIN "
              .$_sql->prefix()."participants b ON a.updater_id = b.user_id
                  INNER JOIN "
              .$_sql->prefix()."participants c ON a.creator_id = c.user_id

                              
                            WHERE a.sheet_id = "
              .$_GET['quizid'].""); 

              BTW: Ist INNER JOIN wirklich gewünscht? Wäre LEFT JOIN nicht sinnvoller?
              Zuletzt geändert von xManUx; 03.07.2005, 19:12.

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

              Kommentar


              • #8
                SELECT tab1.username FROM tab1, tab2 WHERE tab1.id = tab2.creator_id OR tab1.username = tab2.updater_id

                Sowas?
                EDIT:
                Ah jetzt hab ichs geblickt, wenns das ist was xManUx schrieb ...
                Zuletzt geändert von onemorenerd; 03.07.2005, 19:12.

                Kommentar


                • #9
                  Danke. So einfach! Und es funkt 1A.

                  Kommentar


                  • #10
                    Und Du kennst den Unterschied zwischen INNER JOIN und LEFT JOIN ? Was machst du, wenn du plötzlich einen Userdatensatz löschst?

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

                    Kommentar


                    • #11
                      Ja, ich habe schon festgestellt, dass wenn ein Username nicht zugeordnet werden kann, dass dann das SQL-Ergebnis erfolglos ist.

                      Was ist der Unterschied?

                      Kommentar


                      • #12
                        INNER JOIN liefert dir nur Ergebnisse, bei denen die Regeln erfüllt sind!
                        LEFT JOIN liefert dir alle Ergebisse, auch die, bei denen die Regeln nicht erfüllt sind.. Probiers doch einfach mal aus, und mache aus INNER JOIN einen LEFT JOIN!

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

                        Kommentar


                        • #13
                          Aber wie packe in 2 Inner Joins in eine SQL-Anweisung?
                          hintereinander ....

                          ---------------
                          Note:

                          Es gibt jedoch einen Unterschied zwischen

                          PHP-Code:
                          FROM x INNER JOIN y USING (idINNER JOIN z USING (id
                          und
                          PHP-Code:
                          FROM x INNER JOIN y ON x.id=y.id INNER JOIN z ONz.id=x.id 
                          Allerdings wie schon xManux sagte der Unterschied zwisdchen INNER UND LEFT ist enorm
                          chansel0049
                          ----------------------------------------------------
                          if you've reached the bottomline - dig further!
                          Übersetzer gesucht? http://www.babelport.com

                          Kommentar

                          Lädt...
                          X