[MySQL 4.0] Abfrage nach Datensätzen die nicht vorhanden sind

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

  • #16
    probier mal LEFT OUTER JOIN explizit und nimm az.server_id mal in den select-teil mit auf

    ausgabe?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #17
      Syntax:
      PHP-Code:
      SELECT 
        S
      .*, az.server_id, IF(ISNULL(az.tag_stoerstart_datum),'nicht ausgefallen'az.tag_stoerstart_datum)
      FROM
        server S
        LEFT OUTER JOIN tagesstatus az USING 
      (server_id)
      WHERE
        az
      .server_id IS NULL
        
      OR
        
      az.tag_stoerstart_datum>=NOW() - INTERVAL 1 DAY
      Ausgabe ist selbe wie oben, nur mit der Spalte "server_id" noch mit drin.

      Kommentar


      • #18
        gibt es keinen eintrag mit server_id 5 in tagesstatus oder gibt es einen, aber die zeit liegt mehr als 24h zurück?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #19
          Es gibt einen, aber der ist vom 15.08.2003, liegt also mehr als 24h zurück.
          Es gibt auch Einträge mit der server_id "1", einer davon ist von heute. Den müsste er ja dann auch anzeigen.....

          Kommentar


          • #20
            Ich habe das ganze jetzt mal vereinfacht durch einen Kollegen versucht:

            PHP-Code:
            SELECT ser_name FROM server WHERE server_id NOT IN
            (SELECT server_id FROM tagesstatus WHERE tag_stoerstart_datum >=
            DATE_SUB(NOW(), INTERVAL 24 HOUR) AND tag_stoerstart_zeit >= now() ); 
            Das ist soweit denke ich mal sehr logisch, aber ich bekomme von SQL eine Fehlermeldung


            You have an error in your SQL syntax. Check the manual that corresponds
            to your MySQL server version for the right syntax to use near 'SELECT
            server_id FROM tagesstatus WHERE tag_stoerstart_datum >=


            Wo liegt denn bei der Abfrage der Fehler ????

            Kommentar


            • #21
              du hast zwei selects verschachtelt, das geht erst ab mysql 4

              du kannst aber die innere abfrage ausführen und dann die server auslesen mit der ausgelesenen server_id (in ner zweiten abfrage)
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #22
                OK, Danke !

                @ EDIT:

                Ich hab das jetzt mal so realisiert, aber ich denke in der MySQL Abfrage ist ein Fehler, bekomme Meldung von PHP: "mysql_fetch_array: supplied argument is not a valid MySQL result....."

                PHP-Code:
                $abfrage_server mysql_query("SELECT server_id FROM tagesstatus WHERE tag_stoerstart_datum >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
                                                                        AND tag_stoerstart_zeit >= now() "
                );
                                        
                $data_server mysql_fetch_array($abfrage_server);
                                        
                                        
                $abfrage_server2 mysql_query("SELECT ser_name FROM server WHERE server_id NOT IN '$data_server[server_id]' ");
                                        
                $data_server2 mysql_fetch_array($abfrage_server2);
                                        echo 
                $data_server2['ser_name']; 
                Zuletzt geändert von el_espiritu; 28.08.2003, 10:33.

                Kommentar


                • #23
                  Hätte ich diese Frage vielleicht im "PHP-Developer"-Forum stellen sollen?
                  Glaub die passt hier nicht mehr wirklich hin oder?

                  Kommentar


                  • #24
                    du musst schon mit allen server_ids arbeiten die du bekommst
                    PHP-Code:
                    $abfrage_server mysql_query("SELECT server_id 
                      FROM tagesstatus 
                      WHERE tag_stoerstart_datum >= DATE_SUB(NOW(), INTERVAL 24 HOUR) 
                      AND 
                      tag_stoerstart_zeit >= now() "
                    );
                    while(
                    $row=mysql_fetch_array($abfrage_server))
                      
                    $data_server[]=$row['server_id'];

                    $sql='SELECT ser_name FROM server';
                    if (isset(
                    $data_server))
                       
                    $sql.=' WHERE server_id NOT IN ('.implode(',',$data_server).')';
                    $abfrage_server2 mysql_query($sql);
                    while (
                    $data_server2 mysql_fetch_array($abfrage_server2))
                      echo 
                    $data_server2['ser_name'].'<br />'
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #25
                      Wollte nur noch mal Bescheid sagen, das der Vorschlag von dir, "mrhappiness", wunderbar klappt. Ich habe das nun in meine Ausgabe-while-Schleife integriert und es funzt super!
                      Danke nochmal!!!!

                      Kommentar


                      • #26
                        freuen das mich tut junger padawan
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar

                        Lädt...
                        X