Klaus: Überprüfen ob Felder ausgefüllt

Hallo,
ich habe einen recht umfangreichen Datensatz in einer PostgreSQL und möchte zur Laufzeit überprüfen ob in ca. 80 ausgewählten Feldern von ca. 120 in der Tabelle insgesamt ein Eintrag (nur varchar) vorhanden ist.
Wenn ich das über eine If-Abfrage in meiner PHP Ausgabe mache ist das ja wahrscheinlich recht rechenintensiv.
Wer hat da einen Tipp?
Klaus

  1. Wer hat da einen Tipp?

    Warum ist das Themengebiet PHP wenn du doch ein SQL-Problem hast?

    Mach doch einfach einen Select auf alle Datensätze bei denen kein einziges deiner "Plichtfelder" einen Leerstring oder NULL enthält (oder umgekehrt).

    1. Wer hat da einen Tipp?

      Warum ist das Themengebiet PHP wenn du doch ein SQL-Problem hast?

      Mach doch einfach einen Select auf alle Datensätze bei denen kein einziges deiner "Plichtfelder" einen Leerstring oder NULL enthält (oder umgekehrt).

      So wie ich es verstanden habe hat er 80 Felder die aus einem Formular kommen ($_POST) und möchte prüfen ob da ein varchar dabei ist. Wenn ja oder nein wird das ganze in eine Tabelle mit 120 Feldern gespeichert oder so.

      Gruß
      Ratender
      T-Rex

      1. Hi,
        ich habe die Tabelle als Recordset in PHP und muß eine Ausgabe bestimmter Inhalte der Tabelle machen (ca. 20 Felder) und zusätzlich die Info ausgeben ob die jeweiligen Datensätze valide sind (also ob die 80 Felder mit einem String befüllt sind).
        Natürlich habt Ihr recht, das sollte direkt via SQL gelöst werden.
        Soll ich die dann die Überprüfung von 80 Feldern in einen Subselect packen?

        1. Hi!

          Soll ich die dann die Überprüfung von 80 Feldern in einen Subselect packen?

          Was versprichst du dir davon?
          Ein DBMS überprüft nicht. Es liefert nur Daten anhand von Bedingungen. Es kann auch berechnete Werte liefern, über eine Formel in der SELECT-Klausel.

          Lo!

          1. Was versprichst du dir davon?
            Ein DBMS überprüft nicht. Es liefert nur Daten anhand von Bedingungen. Es kann auch berechnete Werte liefern, über eine Formel in der SELECT-Klausel.

            O.K., habe es dann doch pragmatisch mit PHP gelöst, einfache Überprüfung über definiertes Array der Felder, fluppt prima und ist sehr schnell.
            Danke nochmal für die Denkanstöße!
            Klaus

  2. Hi!

    ich habe einen recht umfangreichen Datensatz in einer PostgreSQL und möchte zur Laufzeit überprüfen ob in ca. 80 ausgewählten Feldern von ca. 120 in der Tabelle insgesamt ein Eintrag (nur varchar) vorhanden ist.

    Definiere "ein Eintrag". NULL wäre sicher keiner, Leerstring vermutlich auch nicht, aber ein SQL-DBMS prüft beim einfachen INSERT nur auf NULL oder nicht NULL, wenn das in der Spalte so definiert wurde. Weitere Prüfungen können nur in einer Stored Procedure abgehandelt werden.

    Wenn ich das über eine If-Abfrage in meiner PHP Ausgabe mache ist das ja wahrscheinlich recht rechenintensiv.

    Das andere Lösungsprinzip wäre, wie schon gesagt, das DBMS prüfen zu lassen. Dann hast du auch im Nicht-ausgefüllt-Fall einen Roundtrip zwischen DBMS und PHP, was mehr kostet als ein bisschen PHP-Code.

    Lo!

    1. Hi!

      P.S. ich ging davon aus, dass du Nutzereingaben prüfen willst. Nochmal gelesen liest sich das anders.

      ich habe einen recht umfangreichen Datensatz in einer PostgreSQL und möchte zur Laufzeit überprüfen ob in ca. 80 ausgewählten Feldern von ca. 120 in der Tabelle insgesamt ein Eintrag (nur varchar) vorhanden ist.

      Du willst also in 80 Felder auf "leer" prüfen. Das kannst du mit einem SELECT und einer Monster-WHERE-Klausel erreichen.

      Lo!

      1. P.S. ich ging davon aus, dass du Nutzereingaben prüfen willst. Nochmal gelesen liest sich das anders.

        Da bist du nicht der einzige.

        Du willst also in 80 Felder auf "leer" prüfen. Das kannst du mit einem SELECT und einer Monster-WHERE-Klausel erreichen.

        Sag' ich doch :)