German Frage zu SQL Abfrage (Query)

mw71

Active Member
Licensed User
Longtime 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?
 

rboeck

Well-Known Member
Licensed User
Longtime User
Einen Schritt zur Lösung kann ich vorschlagen: Du musst die Abfrage in zwei Teile splitten; Teil 1 sieht in etwa so aus:

B4X:
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;
B4X:
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...
 

mw71

Active Member
Licensed User
Longtime 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
 
Top