Doener-Join

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

  • Doener-Join

    Code:
    Tabelle 1: Stores
    
    LadenID..|.Besitzer
    ---------|---------
    .1.......|.Peter...
    .2.......|.Markus..
    
    Tabelle 2: MafiaStore
    
    MafiaID..|.LadenId
    ---------|---------
    .1.......|.1.......
    .1.......|.2.......
    .3.......|.1.......
    
    Tabelle 3: Mafia
    
    MafiaID..|.MafiaBoss
    ---------|---------
    .1.......|.Bruno der Macker
    .2.......|.Henry der Hengst
    .3.......|.Karl der Kale
    PROBLEM:

    Ich moechte nun die Namen der MafiaBosse haben, die den Laden von Peter, also LadenID 1 erpressen. Ergebnis hier wäre ja "Bruno der Macker" und "Karl der Kale", aber wie schaut das mit dem SQL-Statement aus, wenn ich über 3 Tabellen gehen muss? Ich schaffe es nur 2 Tabellen zu verknüfpen... und was ist mit der

    3.??? Keine Ahnung. :|


    PHP-Code:
    SELECT 
    FROM Stores a
    LEFT JOIN MafiaStore USING 
    (LadenID)
    WHERE a.LadenID 
    Zuletzt geändert von uschi; 05.07.2005, 20:52.

  • #2
    Schau dir mal dies hier an. Dort findest du im zweiten Post einen Join über mehr als zwei Tabellen.

    Kommentar


    • #3
      aber alle tabelle eine gemeinsamt spalte dort! die habe ich NICHT!

      Kommentar


      • #4
        Auf

        SELECT m.MafiaBoss
        FROM Mafia m, MafiaStore ms, Stores s
        WHERE m.MafiaID = ms.MafiaID AND ms.LadenID = s.LadenID AND s.Besitzer = 'Peter'

        bist du aber schon selbst gekommen, oder? Die Logik steckt ja schließlich in deiner Frage schon drin.

        Mit Google und der Forumssuche kann dann ein expliziter Join kein Problem mehr sein. Du willst ihn ja eh nicht einfach so hingeworfen bekommen, willst genau verstehen, was welcher Join bewirkt, nicht wahr?

        Kommentar


        • #5
          Original geschrieben von uschi
          aber alle tabelle eine gemeinsamt spalte dort! die habe ich NICHT!
          Code:
          # mit ON können auch spalten verglichen werden, deren namen nicht gleich sind
          # aber schon allein der übersichtlichkeit halber wären identische spaltennamen besser
          # sinnloses beispiel:
          SELECT
          	t1.zahl, t2.quadrat
          FROM
          	tabelle1 t1
          	INNER JOIN tabelle2 t2 ON t1.tab1_id = t2.tab2_id
          LESEN kannst du nicht so gut wie rumschreien, kann das sein?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            OffTopic:
            Was für ne Tabelle ist das denn? Willst du mit deiner DB Mafia-Bossen helfen nur die Läden zu erpressen die nicht schon von nem anderen erpresst werden?
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #7
              Original geschrieben von Quetschi
              OffTopic:
              Was für ne Tabelle ist das denn? Willst du mit deiner DB Mafia-Bossen helfen nur die Läden zu erpressen die nicht schon von nem anderen erpresst werden?
              Wenn er nicht so gut lesen kann, dann ists unsinnig!

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

              Kommentar


              • #8
                Ich zweifle ausserdem den Sinn von Tabelle2 an. MarifID kann man imho genausogut in Tabelle 1 unterbringen. Da jeder Besitzer ja nur einen MafiaBoss haben kann...

                Kommentar


                • #9


                  sieh dir die Tabelleninhalte nochmal genau an, der Arme Ladenbesitzer 'Peter' wird von 'Bruno der Macker' und 'Karl der Kale' gleichzeitig erpresst.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Autsch, übersehn, ok.... dann muss die Tabelle natürlich bleiben....

                    OffTopic:
                    Der arme Peter - mit Szilianern ist wirklich nicht zu spaßen.... auch wenn die irgendwie nicht italienisch klingen - Giovanni das Messer oder DonCornuto wären wohl besser Namen *g*

                    Kommentar


                    • #11
                      OffTopic:
                      Sag mal "Cornuto" zu einem Italiener.

                      Besonders die Römer und Sizilianer sind da ganz erpicht drauf, so genannt zu werden...
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        OffTopic:
                        PHP-Code:
                        <?php

                        if($einnahmen[$erpresste["Peter"]["id"]] < 1000)
                        {
                           
                        $erpresste["Peter"]["Körper"] .= $betonblock_um_fuesse;
                           
                        $Hafenbecken[] = $erpresste["Peter"];
                        }


                        ?>



                        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                        Schön - etwas Geschichte kann ja nicht schaden.
                        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                        Kommentar


                        • #13
                          Immerhin bist Du ja schon auf
                          PHP-Code:
                          SELECT 
                          FROM Stores a
                          LEFT JOIN MafiaStore USING 
                          (LadenID)
                          WHERE a.LadenID 
                          gekommen. Wo ist das Problem auf die nächste Tabelle zu joinen?
                          PHP-Code:
                          SELECT 
                          FROM Stores a
                          LEFT JOIN MafiaStore USING 
                          (LadenID)
                          LEFT JOIN Mafia
                          USING 
                          (???)
                          WHERE a.LadenID 
                          Welches Feld verbindet wohl die Tabellen MafiaStore und Mafia?

                          Und wenn Du dann noch in deinem SELECT * nur die richtigen Felder raussuchst, die Du brauchst, hast Du fertig.
                          Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                          Kommentar

                          Lädt...
                          X