M mw71 Well-Known Member Licensed User Longtime User Jul 5, 2017 #1 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?
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?
R rboeck Well-Known Member Licensed User Longtime User Jul 6, 2017 #2 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...
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...
klaus Expert Licensed User Longtime User Jul 6, 2017 #3 Versuche mal dies, nicht getestet: SELECT COUNT(DISTINCT Spalte_2) FROM tabelle WHERE Spalte_3 LIKE '%1%'
Versuche mal dies, nicht getestet: SELECT COUNT(DISTINCT Spalte_2) FROM tabelle WHERE Spalte_3 LIKE '%1%'
M mw71 Well-Known Member Licensed User Longtime User Jul 6, 2017 #4 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
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