Problem mit JOIN

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

  • #31
    versuchen wir's mal mit ner ganz revolutionären herangehensweise

    du postest
    - dein statement (so, dass man es lesen kann)
    die ausgabe, die du bekommst
    - die ausgabe, die du gerne hättest
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #32
      Das SQL-Statement:

      PHP-Code:
      $result mysql_query("SELECT 
      T.*, 
      P.id as post_id, 
      P.date, 
      P.userid AS p_userid,
                                 DATE_FORMAT(T.date, '%d.%m.%Y') t_date, 
      DATE_FORMAT(T.date, '%H:%i:%s') t_time,
      DATE_FORMAT(P.date, '%d.%m.%Y') p_date, 
      DATE_FORMAT(P.date, '%H:%i:%s') p_time

      FROM board_threads 
      T INNER JOIN board_posts P USING(bid)
      WHERE T.bid = "
      .$id." AND T.catid= ".$catid.
      GROUP BY T.id 
      ORDER BY post_id DESC"
      ) or die (mysql_error()); 
      Restlicher PHP Code (falls dort der Fehler liegen sollte):
      PHP-Code:
          $i=1;
          while (
      $thread mysql_fetch_array($result)){
          
          if ((
      $i%2)==0){    echo "<tr bgcolor='$tcolor3' height='$theight'>"; }
          else { echo 
      "<tr bgcolor='$tcolor2' height='$theight'>"; }
          
      $i++;

          if (
      $thread[status] == "open") { echo "<td width='3%' align='center'><img src='gfx/icons/opened_thr.gif' border='0'></td>"; }
          else { echo 
      "<td width='3%' align='center'><img src='gfx/icons/closed_thr.gif' border='0'></td>"; }
          
          echo 
      "<td align='left'><a href='?action=board&catid=$catid&tid=$thread[id]&bid=$id'>
          <p style='margin-left:5; margin-top:3; margin-bottom:3; font-weight:bold; font-size:11px'>
      $thread[topic]</a>";

          echo 
      "</p><p style='margin-left:5; margin-top:3; margin-bottom:3'>» by ";

          
      $gu mysql_fetch_array(mysql_query("SELECT nickname FROM user WHERE id='$thread[userid]'"));
          
      $username $gu[nickname];

          echo 
      "<a href='?action=user&id=$thread[userid]'>$username</a>";
          echo 
      " @ $thread[t_date]$thread[t_time] o'clock</p></td>";

          
      $count mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM board_posts WHERE tid='$thread[id]'"));
          
      $count[0]--;

          echo 
      "<td align='center'>$count[0]</td>

          <td align='center'>
      $thread[hits]</td>
          <td align='left'>"
      ;

          
      $gu2 mysql_fetch_array(mysql_query("SELECT nickname FROM $user_tname WHERE id='$thread[p_userid]'"));
          
      $username2 $gu2[nickname];

          echo 
      "<p style='margin-left:10; margin-top:0; margin-bottom:0'>$thread[p_date]$thread[p_time] o'clock</p></a>
          <p style='margin-left:10; margin-top:3; margin-bottom:0'>by "
      ;

          echo 
      "<a href='?action=user&id=".$thread[p_userid]."'>$username2</a>
          </p></td></tr>
          </td></tr>"
      ;

          }
          } 
      Ausgabe:
      Ich bekomme ALLE Daten von board_threads, wo sich die Threads befinden, nur einma die Daten von board_posts, wo sich die posts befinden. Das heisst, es wird bei "Letzter Eintrag" immer irgendein bestimmter Nickname und eine bestimmte Uhrzeit von board_posts ausgegeben und JEDEM Thread zugeordnet.

      Zudem ist die Sortierung der Threads falsch, da nicht nach zuletzt erstelltem Post sortiert wird, sondern nach Aktualität eines Threads.
      Gewünschte Ausgabe:
      Nach Neuheit der Posts und nicht Threads sortieren. Richtigen Nicknamen und Uhrzeit des Letzten Posts im jeweiligen Thread anzeigen.
      EDIT:
      code->quote by Abraxax
      Zuletzt geändert von Abraxax; 27.03.2004, 16:37.

      Kommentar


      • #33
        Ich hasse es wirklich immer doppelt zu posten. Bitte helft mir.

        Kommentar


        • #34
          Bitte, mit den zur Verfügung gestellten Daten sollte dies doch nun verständlicher sein?

          Kommentar


          • #35
            Das SQL-Statement:

            PHP-Code:
            $result mysql_query("SELECT 
            T.*, 
            P.id as post_id, 
            P.date, 
            P.userid AS p_userid,
                                       DATE_FORMAT(T.date, '%d.%m.%Y') t_date, 
            DATE_FORMAT(T.date, '%H:%i:%s') t_time,
            DATE_FORMAT(P.date, '%d.%m.%Y') p_date, 
            DATE_FORMAT(P.date, '%H:%i:%s') p_time

            FROM board_threads 
            T INNER JOIN board_posts P USING(bid)
            WHERE T.bid = "
            .$id." AND T.catid= ".$catid.
            GROUP BY T.id 
            ORDER BY post_id DESC"
            ) or die (mysql_error()); 
            Restlicher PHP Code (falls dort der Fehler liegen sollte):
            PHP-Code:
                $i=1;
                while (
            $thread mysql_fetch_array($result)){
                
                if ((
            $i%2)==0){    echo "<tr bgcolor='$tcolor3' height='$theight'>"; }
                else { echo 
            "<tr bgcolor='$tcolor2' height='$theight'>"; }
                
            $i++;

                if (
            $thread[status] == "open") { echo "<td width='3%' align='center'><img src='gfx/icons/opened_thr.gif' border='0'></td>"; }
                else { echo 
            "<td width='3%' align='center'><img src='gfx/icons/closed_thr.gif' border='0'></td>"; }
                
                echo 
            "<td align='left'><a href='?action=board&catid=$catid&tid=$thread[id]&bid=$id'>
                <p style='margin-left:5; margin-top:3; margin-bottom:3; font-weight:bold; font-size:11px'>
            $thread[topic]</a>";

                echo 
            "</p><p style='margin-left:5; margin-top:3; margin-bottom:3'>» by ";

                
            $gu mysql_fetch_array(mysql_query("SELECT nickname FROM user WHERE id='$thread[userid]'"));
                
            $username $gu[nickname];

                echo 
            "<a href='?action=user&id=$thread[userid]'>$username</a>";
                echo 
            " @ $thread[t_date]$thread[t_time] o'clock</p></td>";

                
            $count mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM board_posts WHERE tid='$thread[id]'"));
                
            $count[0]--;

                echo 
            "<td align='center'>$count[0]</td>

                <td align='center'>
            $thread[hits]</td>
                <td align='left'>"
            ;

                
            $gu2 mysql_fetch_array(mysql_query("SELECT nickname FROM $user_tname WHERE id='$thread[p_userid]'"));
                
            $username2 $gu2[nickname];

                echo 
            "<p style='margin-left:10; margin-top:0; margin-bottom:0'>$thread[p_date]$thread[p_time] o'clock</p></a>
                <p style='margin-left:10; margin-top:3; margin-bottom:0'>by "
            ;

                echo 
            "<a href='?action=user&id=".$thread[p_userid]."'>$username2</a>
                </p></td></tr>
                </td></tr>"
            ;

                }
                } 
            Ausgabe:
            Ich bekomme ALLE Daten von board_threads, wo sich die Threads befinden, nur einma die Daten von board_posts, wo sich die posts befinden. Das heisst, es wird bei "Letzter Eintrag" immer irgendein bestimmter Nickname und eine bestimmte Uhrzeit von board_posts ausgegeben und JEDEM Thread zugeordnet.

            Zudem ist die Sortierung der Threads falsch, da nicht nach zuletzt erstelltem Post sortiert wird, sondern nach Aktualität eines Threads.
            Gewünschte Ausgabe:
            Nach Neuheit der Posts und nicht Threads sortieren. Richtigen Nicknamen und Uhrzeit des Letzten Posts im jeweiligen Thread anzeigen.
            EDIT:
            bold entfernt + code->quote by Abraxax
            Zuletzt geändert von Abraxax; 27.03.2004, 16:36.

            Kommentar


            • #36
              Hilfe

              Kommentar

              Lädt...
              X