German Frage zu SQL Abfrage (Query)

Discussion in 'German Forum' started by mw71, Jul 5, 2017.

  1. mw71

    mw71 Active Member Licensed User

    Hallo

    ich habe eine SQLite DB mit einer Tabelle. Aus dieser möchte ich in einer Spalte die Anzahl der Verschiedenen Einträge zählen, wenn in einer anderen Spalte ein bestimmter Wert steht.

    Ein Beispiel: ich möchte die Anzahl der verschiedenen Einträge in Spalte 2 zählen wenn (UND verknüpft) in Spalte 3 eine 1 steht. Ergebnis in diesem Beispiel ist also 4 (A, B, C und D -> 4 Verschiedene).

    Spalte_1 Spalte_2 Spalte_3
    A A 1
    B A 1
    A B 1
    B B 1
    A C 1
    B C 1
    A D 1
    A E L

    im Moment sieht die Abfrage so aus:
    SELECT COUNT(Spalte_2) FROM tabelle WHERE Spalte_3 LIKE '%1%'
    Diese liefert mir als Ergebnis aber 7.

    Hat jemand einen Tipp wie ich die Abfrage gestalten muss?
     
  2. rboeck

    rboeck Well-Known Member Licensed User

    Einen Schritt zur Lösung kann ich vorschlagen: Du musst die Abfrage in zwei Teile splitten; Teil 1 sieht in etwa so aus:

    Code:
    SELECT Tabelle1.S2, Tabelle1.S3
    FROM Tabelle1
    GROUP BY Tabelle1.S2, Tabelle1.S3
    HAVING (((Tabelle1.S3)=
    "1"));
    Die erste Abfrage liefert Dir jetzt die Spalte S1 sowie deren jeweilige Anzahl zurück:
    A 1
    B 1
    C 1
    D 1

    Mit der zweiten Abfrage zählst Du jetzt die Anzahl der Zeilen;
    Code:
    SELECT Count(Abfrage4.S3) AS AnzahlvonS3
    FROM Abfrage4;
    Das Ergebnis ist 4. Es ist auch möglich, die beiden Abfragen ineinander zu verschachteln, habe aber im Moment kein passendes Beispiel gefunden...
     
  3. klaus

    klaus Expert Licensed User

    Versuche mal dies, nicht getestet:
    SELECT COUNT(DISTINCT Spalte_2) FROM tabelle WHERE Spalte_3 LIKE '%1%'
     
  4. mw71

    mw71 Active Member Licensed User

    Hallo,

    Danke an euch beide. Ich habe mich nun für die Version von Klaus entschieden.

    Die Variante von rboeck funktioniert grundsätzlich auch. Dafür habe ich das Ergebnis
    in ein Cursor geladen und dann Cur.rowCount abgefragt.

    Grüße
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice