Kristina: Ausgabe nur wenn Felder einen Inhalt haben

Jetzt habe ich noch eine Faage die ich nicht lösen kann:

SELECT * FROM table GROUP BY KFZ ORDER BY KFZ ASC

Wenn in meine Tabelle aber Zeilen sind die keinen Inhalt in der Zelle KFZ haben, möchte ich diese nicht abfragen,

mein Versuch

SELECT * FROM table WHERE kfz<>"" GROUP BY KFZ ORDER BY KFZ ASC

scheiterte klanglos.

  1. Tach!

    Wenn in meine Tabelle aber Zeilen sind die keinen Inhalt in der Zelle KFZ haben, möchte ich diese nicht abfragen,

    Definiere "kein Inhalt"!

    mein Versuch

    SELECT * FROM table WHERE kfz<>"" GROUP BY KFZ ORDER BY KFZ ASC

    scheiterte klanglos.

    Ist es wirklich Leerstring oder ist es NULL? Oder was anderes?

    dedlfix.

    1. Hallo dedlfix,

      heißt <> nicht kleiner, größer "leer"? Müsste es nicht

      SELECT * FROM table WHERE kfz != "" GROUP BY KFZ ORDER BY KFZ ASC
      

      heißen?

      1. Tach!

        heißt <> nicht kleiner, größer "leer"? Müsste es nicht

        SELECT * FROM table WHERE kfz != "" GROUP BY KFZ ORDER BY KFZ ASC
        

        heißen?

        Jein, <> heißt es bei SQL und anderen Sprachen, != ist die Syntax von C. Aber MySQL kann beides.

        dedlfix.

      2. Hello,

        heißt <> nicht kleiner, größer "leer"? Müsste es nicht

        SELECT * FROM table WHERE kfz != "" GROUP BY KFZ ORDER BY KFZ ASC
        

        heißen?

        kommt auf den Spaltentyp und die Abfrageparameter ("binary") an, ob Leerzeichen oder ähnlich aussehende Zeichen (#255) als leer angesehen werden.

        Wenn man nicht sicher ist, was drin steht in der Spalte/Zelle, dann sollte man (leider) ein RegExp als Filter bemühen und dann auf Länge des Ergebnisses prüfen. Nur wenn die Länge des Ergebnisses = 0 ist, sthet nichts (bewertet) relevantes mehr drin im Element/Zelle/Feld. Dabei muss man immer die Sonderstellung von NULL beachten, die je nach DBMS ggf. noch vorher ausgeschlossen/behandelt werden muss.

        Liebe Grüße
        Tom S.

        --
        Es gibt nichts Gutes, außer man tut es
        Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
      3. Hallo Sophie,

        heißt <> nicht kleiner, größer "leer"? Müsste es nicht

        Nein, in Mysql bedeutet dies das Gleiche wie "!=", <> gilt aber als Empfehlung

        SELECT * FROM table WHERE kfz != "" GROUP BY KFZ ORDER BY KFZ ASC
        

        Gruss
        Henry

        1. Hello Henry,

          heißt <> nicht kleiner, größer "leer"? Müsste es nicht

          Nein, in Mysql bedeutet dies das Gleiche wie "!=", <> gilt aber als Empfehlung

          Bei solchen Äußerungen bitte möglichst immer mit Link zur Specification ;-)

          Liebe Grüße
          Tom S.

          --
          Es gibt nichts Gutes, außer man tut es
          Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
          1. Hallo Tom

            Nein, in Mysql bedeutet dies das Gleiche wie "!=", <> gilt aber als Empfehlung

            Bei solchen Äußerungen bitte möglichst immer mit Link zur Specification ;-)

            Guter Einwand 😉

            Hatte das schon so verinnerlicht, weil irgendwo gelesen, dass ich das nie nachgeprüft habe. Finde es auch, zumindest im Moment, nicht in der Spec, als Empfehlung. Danke für den Hinweis.

            Gruss
            Henry

            1. Hello,

              Nein, in Mysql bedeutet dies das Gleiche wie "!=", <> gilt aber als Empfehlung

              Bei solchen Äußerungen bitte möglichst immer mit Link zur Specification ;-)

              Guter Einwand 😉

              Hatte das schon so verinnerlicht, weil irgendwo gelesen, dass ich das nie nachgeprüft habe. Finde es auch, zumindest im Moment, nicht in der Spec, als Empfehlung. Danke für den Hinweis.

              Man könnte da z. B. auf der MySQL Operators-Seite nachsehen und da speziell unter "Nicht gleich".

              Ich habe jetzt nicht näher gesucht, aber vielleicht findest Du dann ja den Hinweis mit der Empfehlung zu <>?

              Liebe Grüße
              Tom S.

              --
              Es gibt nichts Gutes, außer man tut es
              Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
              1. Tach!

                Man könnte da z. B. auf der MySQL Operators-Seite nachsehen und da speziell unter "Nicht gleich".

                Ich habe jetzt nicht näher gesucht, aber vielleicht findest Du dann ja den Hinweis mit der Empfehlung zu <>?

                Steht dort nicht. Für MySQL ist das auch egal, weil es beides kann. Aber der SQL-Standard ist <> und wenn man kompatibel zum Standard sein möchte (muss man nicht), dann empfiehlt sich das <> quasi von selbst.

                dedlfix.

                1. Hello,

                  Ich habe jetzt nicht näher gesucht, aber vielleicht findest Du dann ja den Hinweis mit der Empfehlung zu <>?

                  Steht dort nicht. Für MySQL ist das auch egal, weil es beides kann. Aber der SQL-Standard ist <> und wenn man kompatibel zum Standard sein möchte (muss man nicht), dann empfiehlt sich das <> quasi von selbst.

                  Ich weiß.

                  Trotzdem bin ich in der Vergangenheit im Forum öfter angemault worden, wenn ich <> benutzt habe! :-P

                  Liebe Grüße
                  Tom S.

                  --
                  Es gibt nichts Gutes, außer man tut es
                  Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
        2. also wenn ich benutze

          SELECT * FROM table WHERE kfz != "" GROUP BY KFZ ORDER BY KFZ ASC

          kommt leider die Fehlermeldung

          Parse error: syntax error, unexpected '" GROUP BY KFZ ORDER BY KFZ ASC' (T_CONSTANT_ENCAPSED_STRING)

          1. Tach!

            also wenn ich benutze

            SELECT * FROM table WHERE kfz != "" GROUP BY KFZ ORDER BY KFZ ASC

            kommt leider die Fehlermeldung

            Parse error: syntax error, unexpected '" GROUP BY KFZ ORDER BY KFZ ASC' (T_CONSTANT_ENCAPSED_STRING)

            Das ist aber kein Syntax-Fehler im (My)SQL-Statement, sondern ein Fehler in deinem PHP-Code. Wenn du den Statement-String mit "" eingefasst hast, musst du darin vorkommende " maskieren: \". Alternativ kannst du die einfachen Anführungszeichen nehmen, dann sind darin die " probelemlos verwendbar, dafür aber eventuelle ' zu maskieren.

            dedlfix.