Announcement

Collapse
No announcement yet.

wie Count ermitteln?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • wie Count ermitteln?

    Hallo alle,

    ich habe zwei Tabellen:
    <PRE>
    Tabelle1
    Nutzer, Name, Typ
    1, Müller, H
    2, Meier, H
    3, Schulze, H
    4, Schröder, P
    <BR>
    Tabelle2
    Nutzer, Wert
    1, 1
    1, 10
    1, 12
    1, 5
    3, 10
    3, 15
    3, 20
    4, 2
    </PRE>

    Ich möchte nun die Anzahl der Nutzer erhalten, die den Typ "H" haben und als Wert mindestens einmal größer "9".
    Im Beispiel wäre das 2 Stück (Nutzer 1 und 3).

    Ich erhalte aber 5, da für jeden Nutzer immer alle Detailsätze mit Wert>9.

    Mit DISTINCT und GROUP BY kam ich nicht weiter.

    Danke im Voraus von
    André

  • #2
    Hallo André,

    mit SQL geht das normalerweise so:
    <pre>
    select count(Nutzer) from Tabelle1
    where Nutzer in
    (select t1.Nutzer from Tabelle1 t1
    join Tabelle2 t2 on (t1.Nutzer = t2.Nutzer)
    where t1.TYP = 'H' and
    t2.WERT > 9
    group by t.id
    having count(t.id) > 0)
    </pre>

    Ob das aber von MySQL unterstützt wird kann ich nicht sagen.

    Gruß

    Torste

    Comment


    • #3
      Hallo Torsten,

      nein, MySql unterstützt SubSelect offenbar (noch) nicht.

      Andr&#233

      Comment


      • #4
        In der 4.1.1. von MySQL sollte der SubSelect eigentlich gehen.<p>
        Vielleicht kommst Du hier weiter:<br>
        http://www.mysql.com/doc/en/Subquery_errors.html<p>
        Schöne Grüße, Mario Noac
        Schöne Grüße, Mario

        Comment


        • #5
          In der Version 4.1.1 geht es 100%-ig.
          Ich benutze da Subselects schon häufig.

          So könnte es aussehen

          mit group by :
          select count(*) from
          (
          select Nutzer from Tabelle1, Tabelle2
          where Tabelle1.Nutzer = Tabelle2.Nutzer
          and Wert > 9
          group by Tabelle1.Nutzer
          ) as subselect

          oder mit distinct
          select count(*) from
          (
          select distinct Nutzer from Tabelle1, Tabelle2
          where Tabelle1.Nutzer = Tabelle2.Nutzer
          and Wert > 9
          ) as subselect

          Beachte die <b>as subselect</b> Alias. Für MySQL ist es nötig z.B. für Oracle wäre es nicht( in diesen Fall nicht).

          Geht aber in keinen der älteren Versionen, also auch in der 4.1.0 NICHT.
          Ich bin ziemlich sicher dass mann da nicht ohne
          Schleife zu programmieren oder temporaly tabelle das Problem lösen kann.

          Grüsse, Andrá

          Comment

          Working...
          X