Fehler in MySQL-Abfrage...

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

  • Fehler in MySQL-Abfrage...

    PHP-Code:
    <?php
    $zeit 
    date("t");  // Liest Anzahl der Tage des aktuellen Monats aus (28, 29, 30 oder 31)
    $anzahl 0;

    $abfrage mysql_query("SELECT status_id FROM tagesstatus WHERE tag_stoerstart_zeit >= DATE_SUB(NOW(), INTERVAL '$zeit' DAY)");
    while (
    $data mysql_fetch_array($abfrage))
    {
        
    $abfrage2 mysql_query("SELECT status_id FROM tagesstatus WHERE status_id = 2");
        while (
    $data mysql_fetch_array($abfrage2))
        {
            
    $anzahl++;
        }
    }
    echo 
    $anzahl;
    exit;
    ?>
    Wo liegt der Fehler in meiner Abfrage?? Ich bekomme als Ergebnis 45, obwohl nur 5 Datensätze mit der status_id "2" in der Datenbank sind.

  • #2
    hat die äußere schleife nen tieferen sinn?

    wie oft wird die durchlaufen?
    neunmal?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Original geschrieben von mrhappiness
      hat die äußere schleife nen tieferen sinn?
      Ja! Die brauche ich um die Abfrage nach dem Datum zu bekommen. Die Schleife wird so oft durchlaufen wie viele Datensätze in diesem Zeitraum vorhanden sind.
      Ich wusste nicht wie man in einer SQL Abfrage die Abfrage des Datum und die "WHERE status_id = 2" unterbringt.....(geht das überhaupt?) Deswegen hab ich das einfach aufgeteilt.

      Kommentar


      • #4
        ohne dir zu nahe treten zu wollen: die idee ist scheiße

        und sie ist sogar richtig scheiße, da du die ergebnisse der äußeren abfrage nirgendwo verwendest

        oder?!


        bedingungen werden übrigens mit AND verknüpft

        http://www.mysql.com/doc/de
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Stimmt, so geht's gleich viel besser:

          PHP-Code:
          SELECT status_id FROM tagesstatus WHERE tag_stoerstart_zeit >= DATE_SUB(NOW(), INTERVAL '$zeit' DAY) AND status_id 
          Thanx!

          Kommentar


          • #6
            wobei sich mir der sinn der abfrage nicht gänzlich erschließt

            du lässt dir ne spalte zurückgeben, deren wert du bereits kennst
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              OffTopic:
              er will bestimmt auf nummer sicher gehen
              Kissolino.com

              Kommentar


              • #8
                OffTopic:
                tut er aber nicht, dann müsste er nämlich noch prüfen, was drinsteht
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  OffTopic:
                  nur versuch macht kluch
                  Kissolino.com

                  Kommentar


                  • #10
                    Die Abfrage gibt mir die Anzahl der Datensätze mit der status_id "2" in einem bestimmten Zeitraum.

                    Kommentar


                    • #11
                      nein, die abfrage liefert dir die spalte status_id mit dem wert 2 zurück und zwar so oft wie ein eintrag mit status_id 2 innerhalb eines bestimmten zeitraums vorkommt.
                      daraus ermittelst du die anzahl

                      PHP-Code:
                      $sql='SELECT COUNT(status_id) anzahl
                      FROM tagesstatus 
                      WHERE 
                        tag_stoerstart_zeit >= DATE_SUB(NOW(), INTERVAL '
                      .$zeit.' DAY) 
                        AND 
                        status_id = 2'
                      ;
                      $result=mysql_query($sql) or die(mysql_error());
                      $anzahl=mysql_fetch_assoc($result);
                      $anzahl=$anzahl['anzahl'];
                      echo 
                      $anzahl
                      so isses geringfügig kürzer, schneller und vor allem übersichtlicher (imho)
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar

                      Lädt...
                      X