Verküpfung mehrerer Joins

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

  • Verküpfung mehrerer Joins

    kann man mehrere joins in ein stmt packen?
    wenn ja, was ist dann falsch?
    Code:
    SELECT forum_foren.fid,
    forum_foren.name,
    forum_foren.description,
    COUNT( forum_threads.tid ) AS COUNT_OF_tid,
    COUNT( forum_posts.pid ) AS COUNT_OF_pid
    FROM forum_posts
    INNER JOIN forum_threads ON (forum_posts.tid = forum_threads.tid)
    INNER JOIN forum_foren ON (forum_threads.fid = forum_foren.fid)
    GROUP BY forum_foren.fid, forum_foren.name, forum_foren.description

  • #2
    was kommt den für ein Fehler?
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      lediglich beim fetchen kommt

      mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ....

      Kommentar


      • #4
        also kein SQL Fehler, sondern nur ein leeres Ergebniss?

        mach doch mal die Abfrage mit PHPMyAdmin
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          Can't create/write to file 'e.\TEMP\#sql_ec_0.MYI' (Errcode: 2)

          wo kann man die Fehlercodes nachlesen? oder weiß jemand damit was anzufangen?

          Kommentar


          • #6
            sieht so aus, als wenn das temporäre Verzeichniss für mysql falsch ist
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              nene, alles andere funktioniert
              es sei denn, dass mysql für die joins einen temptable" anlegt !?

              Kommentar


              • #8
                das erfährst du mit

                Code:
                EXPLAIN
                SELECT forum_foren.fid,
                forum_foren.name,
                forum_foren.description,
                COUNT( forum_threads.tid ) AS COUNT_OF_tid,
                COUNT( forum_posts.pid ) AS COUNT_OF_pid
                FROM forum_posts
                INNER JOIN forum_threads ON (forum_posts.tid = forum_threads.tid)
                INNER JOIN forum_foren ON (forum_threads.fid = forum_foren.fid)
                GROUP BY forum_foren.fid, forum_foren.name, forum_foren.description
                im PHPMyAdmin
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  mmh, also unter "extra" steht was mit using temporary

                  wo kann ich das tmp-verzeichnis denn einstellen?

                  Kommentar


                  • #10
                    in der my.cnf oder wie die eben bei dir heisst.

                    also im config-file von mysql.
                    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


                    • #11
                      wenn du in der my.cnf den Join Buffer erhöhst, wird er keine Temporären Tabellen mehr brauchen *g*
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        danke schön.
                        stmt läuft, auch wenn es noch nicht das macht, was es soll

                        Kommentar


                        • #13
                          ... ich kriege es nicht "richtig" hin ...
                          also

                          Code:
                          tab1:
                          [B]FID | NAME[/B]
                          1   |   x
                          2   |   y
                          3   |   z
                          
                          tab2:
                          [B]FID | TID | NAME[/B]
                          1   |  1  |  a
                          1   |  2  |  b
                          1   |  3  |  c
                          2   |  4  |  d
                          2   |  5  |  e
                          3   |  6  |  f
                          
                          tab3:
                          [B]TID | PID | NAME[/B]
                          1   |  1  |  x
                          1   |  2  |  y
                          1   |  3  |  zz
                          1   |  4  |  aa
                          2   |  5  |  bb
                          2   |  6  |  cc
                          
                          das ergebnis soll so aussehen:
                          [B]FID | COUNT(TID) mit FID=FID | COUNT(PID) mit TID=TID bei FID[/B]
                           1  |            3           |       6
                           2  |            2           |       0
                           3  |            1           |       0
                          also im grunde so wie hier im foren, zu jedem forum die anzahl threads und die anzahl posts
                          und das (wenn möglich) in einem stmt (ohne subquery und ohne view, da mysql)
                          Wenn es mit diesen Tabelen nicht gehen sollte .. ich kann sie problemlos ändern, nur ich bräuchte ne lösung.

                          was ich hier schonmal gepostet habe funzt nicht
                          Code:
                          SELECT forum_foren.fid,
                          forum_foren.name,
                          forum_foren.description,
                          COUNT( forum_threads.tid ) AS COUNT_OF_tid,
                          COUNT( forum_posts.pid ) AS COUNT_OF_pid
                          FROM forum_posts
                          INNER JOIN forum_threads ON (forum_posts.tid = forum_threads.tid)
                          INNER JOIN forum_foren ON (forum_threads.fid = forum_foren.fid)
                          GROUP BY forum_foren.fid, forum_foren.name, forum_foren.description
                          mit LEFT JOINS komme ich teilweise klar, bur beim anbinden der dritten tabelle gehts n die hose.
                          vielleicht kommt ja auch jemand an das stmt dieses boards ran !?

                          Kommentar


                          • #14
                            teste das mal. ich hoffe, dass es passt...

                            Code:
                            SELECT    T1.FID,
                                      COUNT(T2.TID) CNT_TID,
                                      COUNT(T3.PID) CNT_PID
                            
                              FROM    tab1 T1
                                        LEFT OUTER JOIN tab2 T2 USING(FID)
                                          LEFT OUTER JOIN tab3 T3 USING(TID)
                            
                            GROUP BY  T1.FID
                            allerdings habe ich jetzt tab1 bis tab3 geschrieben basierend auf der tabellendarstellung von dir. wusste leider deine richtigen namen nicht zuzuordnen..
                            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


                            • #15
                              leider nein
                              in der 2. erg-spalte steht schrott und in der 3. steht scheinbar das was in der 2. stehen muss

                              das ergebnis hatte ich auch irgendwie schonmal ...
                              ja gut, ich sitzt auch schon 2-3 stündchen dadran

                              mit 2 left joins, eingekapselt oder nicht eingekapselt, gehts auch nicht
                              da hab ich glaub ich alle möglichkeiten durch

                              Kommentar

                              Lädt...
                              X