Kris: SQL Abfrage : Count()

Morgen allerseits ...

ich komm mal direkt zur Sache. Warum erhalte ich bei folgendem SQL Statement eine leere Aussage (gar keine) ?

SELECT id FROM xyz_user HAVING COUNT(id) < 2;

Und es gibt in der Datenbank DEFINITIV mit einer id die nur EINMAL vorkommet (sprich kleiner 2)

danke im Vorraus KRIS

P.S.
wenn ich die Syntax umdrehe

SELECT id FROM xyz_user HAVING COUNT(id) < 2;

kriege ich komischerweise Einträge zurück die 2mal die gleich id haben ... wo liegt mein Fehler oO ?

  1. ok nun bin ich ein wenig weitergekommen ...

    SELECT id FROM xyz_user group by id HAVING COUNT(id) < 2

    funktioniert nun fehlerfrei ...

    nun hänge ich an einem anderen Problem ... :\

    SELECT p.xid
    FROM x_user p, xyz_user r
    WHERE p.yid = 0
    AND r.id IN ( SELECT id FROM xyz_user group by id HAVING COUNT(id) < 2 )

    #1064 - You have an error in your SQL syntax.

    1. Hi,

      bist du sicher, dass deine nicht genannte SQL-Version Subselects unterstützt? Bei MySQL z.B. geht das erst ab Version 4.1.

      Der Yeti

      --
      Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
      Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
      Und bin so klug als wie zuvor!
      sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
      1. bist du sicher, dass deine nicht genannte SQL-Version Subselects unterstützt? Bei MySQL z.B. geht das erst ab Version 4.1.

        mysql  Ver 12.22 Distrib 4.0.18, for suse-linux (i686)

        spricht ich hab die Arschkarte :X ?

    2. echo $begrüßung;

      Yeti gab dir ja schon den richtigen Tipp, aber:

      #1064 - You have an error in your SQL syntax.

      Das ist nicht die vollständige Fehlermeldung. Vollständigerweise würde sie noch einen Hinweis anzeigen, an welcher Stelle der Fehler zu suchen ist. Unterschlage bitte diesen Hinweis auch dann nicht, wenn du andere mit der Meldung um Rat fragst.

      echo "$verabschiedung $name";

      1. Das ist nicht die vollständige Fehlermeldung. Vollständigerweise würde sie noch einen Hinweis anzeigen, an welcher Stelle der Fehler zu suchen ist. Unterschlage bitte diesen Hinweis auch dann nicht, wenn du andere mit der Meldung um Rat fragst.

        das ist korrekt ...

        #1064 - 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 id
        FROM xyz_user
        GROUP  BY id
        HAVING COUN

        aber ehrlich gesagt wollte ich nur damit ausdrücken das es einen Fehler in der Syntax gibt ... und das was ausgespuckt worden ist schien mir nicht wirklich informatik :P

        1. Hi,

          es kam mir auch spanisch vor, dass die Fehlermeldung dort schon zu Ende sein sollte. Zum Glück hatte ich ja richtig geraten. ;)
          Der Teil hinter "near" ist aber in der Tat _sehr_ hilfreich, da du dort weißt, _wo_ in deiner Query der Syntax-Fehler aufgetreten ist.
          Damit ist schon mal ein wichtiger Grundstein für die Fehlersuche (auch und besonders für uns hier im Forum) gelegt.

          Der Yeti

          --
          Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
          Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
          Und bin so klug als wie zuvor!
          sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
          1. es kam mir auch spanisch vor, dass die Fehlermeldung dort schon zu Ende sein sollte. Zum Glück hatte ich ja richtig geraten. ;)

            Frage ist ... gibt es mit meiner sql Version keine Möglichkeit mein eigentliches Vorhaben zu verwirklichen (ohne neue Tables etc. anlegen zu müssen) ?

            1. Hi,

              konsultier doch mal http://dev.mysql.com/doc/refman/4.1/en/rewriting-subqueries.html (leider Englisch).

              Gruß,
              Der Yeti

              --
              Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
              Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
              Und bin so klug als wie zuvor!
              sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|