Ankündigung

Einklappen
Keine Ankündigung bisher.

False Abfrage und SQL hängt sich auf

Einklappen

Neue Werbung 2019

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

  • False Abfrage und SQL hängt sich auf

    Hallo,

    folgendes Problem. Im forum ist ein seiten pager 12345...der pager hat 2 Seiten zuviel..also es kommen am ende 2 seiten in denen keine topics sind... der pager zählt eigentlich richtig...also stimmt die abfrage nicht, die die seiten füllt...

    Die Pager Count Abfrage sagt 2263 Topics
    Die SQL Select Abfrage sagt 2223 Topics

    Da auf jeder Seite 25 Topics angezeigt werden, fehlen bei der Select Abfrage 40 Themen, mit denen etwas nicht stimmt.

    Ich versuche nun Punkte aus WHERE wegzulassen oder zu verneinen um genau diese 40 Topics zu finden. Immer wenn ich aber anstatt = != schreibe, hängt sich mein sql server auf.

    Hat jemand eine Idee wie ich bei der folgenden SQL Abfrage rausfinden kann, welche 40 Topics fehlen?

    PHP-Code:
    SELECT t.*, u.usernameu.user_idu2.username as user2u2.user_id as id2p.post_usernamep2.post_username AS post_username2p2.post_time FROM phpbb_topics tphpbb_users uphpbb_posts pphpbb_posts p2phpbb_users u2 
    WHERE 
    t
    .forum_id AND 
    t.topic_poster u.user_id AND 
    p.post_id t.topic_first_post_id AND 
    p2.post_id t.topic_last_post_id AND 
    u2.user_id p2.poster_id 
    der Count prüft übrigens nur:

    WHERE t.forum_id = 1;

    Danke für Hilfe

  • #2
    Aus = ein != zu machen ist auch blödsinn. Lösche einfach eine Bedingung komplett raus, schau dir das Ergebnis an und dann nimmst du sie ggf. wieder mit rein und nimmst die nächste raus.

    Kommentar


    • #3
      Statement mal in phpmyadmin ausgeführt und geschaut, ob da die korrekte Anzahl Einträge kommt? Wenn ja, wie sieht dein entsprechender PHP Code aus?

      mfg Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Da ist die Referentielle Integrität ist nicht gegeben. Sprich du hast Datensätze die auf andere Datensätze verweisen die nicht mehr existent sind. Finden kannst du die Datenästze in dem du den Query schrittweise verkleinerst und/oder mit LEFT JOIN und IS NULL.

        Kommentar


        • #5
          Sofern du die ID's in einem Array hast, kannst du sie ganz einfach mit array_diff ausgeben lassen.
          PHP online testen, zum Beispiel: md5, base64_decode, preg_match, urldecode und viele weitere...

          Kommentar

          Lädt...
          X