Mysql Abfrage funktioniert nicht

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

  • Mysql Abfrage funktioniert nicht

    Hallo,

    ich habe schon etliche Experimente hinter mir, aber bekomme folgende Abfrage nicht zum Laufen.

    Aufbau der Tabellen:

    table 'forum_threads'
    id___forum_id___fixed
    1__________1_____1
    2__________1_____0
    3__________2_____1

    und

    table 'forum_posts'
    id___postdate
    1___20031118191305
    2___20031118191307
    3___20031118191309

    Folgende Queries:

    $query = "SELECT * FROM forum_threads, forum_posts WHERE forum_threads.forum_id=$id ORDER BY forum_threads.fixed DESC, forum_posts.postdate DESC LIMIT $limit";
    -> Ich will alles aus 'forum_threads' lesen und dies nach postdate aus 'forum_posts' sortieren.

    $query = "SELECT * FROM forum_threads, forum_posts WHERE forum_threads.forum_id=$id AND forum_posts.postdate BETWEEN (forum_posts.postdate - ($timeback*24*60*60)) AND NOW()";
    -> Fast das Gleiche, diesesmal nach Datumdifferenz.

  • #2
    ich versteh werder wo die beiden tabellen verknüpft sind noch die fehlermeldungen die du bekommst noch die von dir geposteten ergebnisse und die abweichung zu deinen vorstellungen
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Re: Mysql Abfrage funktioniert nicht

      Original geschrieben von Marco Gutenhof
      Hallo,
      $query = "SELECT * FROM forum_threads, forum_posts WHERE forum_threads.forum_id=$id AND forum_posts.postdate BETWEEN (forum_posts.postdate - ($timeback*24*60*60)) AND NOW()";
      ...
      nicht ausprobiert, aber wie wärs damit... ?
      PHP-Code:
      ...
      WHERE forum_threads.forum_id=$id 
      AND forum_posts.id forum_threads.forum_id
      AND 
      ... 
      (das erste and mit dem kram dahinter isses, was ich meine )
      (-:
      Bookmarks:·Bilder·Jobs·Recht·
      kostenloser Webkataloge-Assistent

      Kommentar


      • #4
        Also ich habe noch einmal etwas rumexperimentiert und es immerhin jetzt ohne Fehlermeldung geschafft, allerdings gibt es noch ein Problem:

        $query = "SELECT t1.id, t1.forum_id, t1.thread_topic, t1.seen, t1.closed, t1.fixed, t2.thread_id, t2.forum_id, t2.postdate ".
        "FROM forum_threads as t1, forum_posts as t2 ".
        "WHERE t1.forum_id=$id AND t2.forum_id=$id AND t2.thread_id=t1.id ".
        "ORDER BY t1.fixed DESC, t2.postdate DESC";

        Jetzt holt er sich zwar alle threads ab, manche kommen aber mehrfach vor:
        t2.thread_id=t1.id
        wenn t1.id öfter als einmal vorkommt (es also mehrere Posts im Thread existieren), holt er sich den Thread entsprechend oft.

        Allerdings möchte ich jede thread_id nur ein einziges mal haben.

        Gibt es eine Möglichkeit, dass man eine Abfrage so gestaltet, dass nur Einträge ein mal ausgewählt werden, z.B nach der id, und diese dann ignoriert werden?

        Kommentar


        • #5
          GROUP BY ?
          if ($getraenk=="kein kaffee mehr da" && $verlangen=="gross") { $arbeitsmoral="im keller"; }

          Kommentar


          • #6
            Ah, danke.

            Soooo, jetzt haben wir es bald geschafft, ein letztes Problem hab ich allerdings noch:

            $query = "SELECT t1.id, t1.forum_id, t1.thread_topic, t1.seen, t1.closed, t1.fixed, t2.thread_id, t2.forum_id, t2.postdate ".
            "FROM forum_threads as t1, forum_posts as t2 ".
            "WHERE t1.forum_id=$id AND t2.forum_id=$id AND t2.thread_id=t1.id ".
            "BETWEEN (t2.postdate - ($timeback*24*60*60)) AND NOW() ".
            "GROUP BY t1.id ".
            "ORDER BY t1.fixed DESC, t2.postdate DESC";

            Das Problem liegt in der BETWEEN Zeile.

            Er soll nur die Threads holen, die in einen bestimmten Zeitabschnitt erstellt worden sind, allerdings weiß ich nicht so richtig, wie ich das mit t2.postdate verknüpfen soll.

            So wie es jetzt ist
            "BETWEEN (t2.postdate - ($timeback*24*60*60)) AND NOW() "
            zeigt er mir gar keine Posts mehr an.

            Kommentar


            • #7
              Lass dir die query mal mit echo ausgeben und schau, ob die so stimmt und es dazu überhaupt Datensätze gibt.
              if ($getraenk=="kein kaffee mehr da" && $verlangen=="gross") { $arbeitsmoral="im keller"; }

              Kommentar

              Lädt...
              X