SQlite nur ein Ausgabe pro Datum

Anfängerfragen zum Programmieren mit PureBasic.
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

SQlite nur ein Ausgabe pro Datum

Beitrag von gnaps »

Hallo Leute,

ich habe hier eine SQLDatenbank und alles Funktioniert bestens.

Jetzt benötige ich aber eine Liste über offene Tagesabschlüsse.

Das heißt
in meine DB sind mehrer Datensätze mit dem gleichen Datum
aber in meinem ListIconGadget soll der Tag nur einmal angezeigt werden.

Beispiel
meine Datensätze
01.03.2016 .......
01.03.2016 ........
01.03.2016 ........
02.03.2016 ........
03.03.2016 ........
03.03.2016 ........
04.03.2016 ........
04.03.2016 ........
05.03.2016 ........

in meinem ListiconGadget soll dann nur
01.03.2016 ........
02.03.2016 ........
03.03.2016 ........
04.03.2016 ........
05.03.2016 ........
stehen

wie löse ich so was, kann mir mal einer eine Schups in die richtige Richtung geben

Schon jetzt besten Dank
Gruß gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von Kiffi »

mit Group By. Mehr schubsen kann ich nicht, weil zu wenig Informationen vorliegen.

Grüße ... Peter
Hygge
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von gnaps »

Hi danke für Deine Antwort,

hier nochmals Details

Meine Datenbank hat den Tabellennamen Kasse,
ich habe hier 22 Spalten, die 8 Spalte beinhaltet das Datum und die 22 Spalte ist mein Abschluss.
Bei Abschluss gibt es nur 2 Werte.
0 = offen
1 = abgeschlossen.

Meine Daten
01.03.2016 .......0
01.03.2016 ........0
01.03.2016 ........0
02.03.2016 ........1
03.03.2016 ........1
03.03.2016 ........1
04.03.2016 ........0
04.03.2016 ........0
05.03.2016 ........1

in meinem ListiconGadget soll dann nur
01.03.2016 offen
02.03.2016 abgeschlossen
03.03.2016 abgeschlossen
04.03.2016 offen
05.03.2016 abgeschlossen
stehen

keine Berechnung keine summen keine gruppierungen.
Nur eine Ausgebe das z.B. am 01.03.2016 Abrechnungen vorliegen und diese noch offen sind.
Das ganze muss ich dann noch in einem Datumsbereich eingrenzen.

Meine SQL-Anweidung
sqlanweisung.s="Select * from Kasse WHERE "+SQLKasseTabellenName.s(8)+" >= '"+AuswertungDatumBeginn.l+"' And "+SQLKasseTabellenName.s(8)+" <= '"+AuswertungDatumEnde.l+"' order by id desc"
im Listicon stehen dann folgende Einträge
01.03.2016 ........offen
01.03.2016 ........offen
01.03.2016 ........offen
02.03.2016 ........abgeschlossen
03.03.2016 ........abgeschlossen
03.03.2016 ........abgeschlossen
04.03.2016 ........offen
04.03.2016 ........offen
05.03.2016 ........abgeschlossen

stimmt ja nach meiner Abfrage von oben.

ich möchte jedoch jeden Tag nur einmal in der Liste stehen haben.
01.03.2016 ........offen
02.03.2016 ........abgeschlossen
03.03.2016 ........abgeschlossen
04.03.2016 ........offen
05.03.2016 ........abgeschlossen


ich hoffe das ist verständlicher

Gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von Kiffi »

joh, wie geschrieben: Group By

Code: Alles auswählen

UseSQLiteDatabase()

DB = OpenDatabase(#PB_Any, ":memory:", "", "", #PB_Database_SQLite)

DatabaseUpdate(DB, "Create Table Kasse (Datum, Abschluss)")

DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('01.03.2016', 0)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('01.03.2016', 0)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('01.03.2016', 0)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('02.03.2016', 1)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('03.03.2016', 1)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('03.03.2016', 1)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('04.03.2016', 0)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('04.03.2016', 0)")
DatabaseUpdate(DB, "Insert Into Kasse (Datum, Abschluss) Values ('05.03.2016', 1)")

DatabaseQuery(DB, "Select * From Kasse Group By Datum")

While NextDatabaseRow(DB)
  Debug GetDatabaseString(DB, 0) + ": " + GetDatabaseString(DB, 1)
Wend
Grüße ... Peter
Hygge
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von gnaps »

Hi Kiffi,

jo, genau so wollte ich das haben, passt perfekt, vielen Dank.

Gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von gnaps »

Hallo Kiffi,

leider habe ich mich zu früh gefreut.

Das oben besprochene funktioniert.
Jedoch habe ich ein erneutes Problem.

Mein Programm ist eine Kassensoftware.

Ich habe in meiner SQLite auch noch die Tabellen

"BanK" für Bankeinzahlungen aus der Kasse
und
"Ausgaben" für Ausgaben aus der Kasse

für den Tagesabschluss der Kasse müssen auch diese Datensätze berücksichtigt werden.

Das Problem ist
es können Bankeinzahlungen oder Ausgaben vorhanden sein ohne das Kasseneingänge vorhanden sind.
Daher haben die Bankeinzahlungen oder die Ausgaben ein anderes Datum wie der Kasseneingang.

Jetzt muss ich die Datenbank noch abfragen ob im Datumsbereich eine Bankeinzahlung oder eine Ausgabe vorhanden ist.
Das ist ja kein Problem.

Aber wie bekomme ich das Datum der offenen Bankeinzahlung oder der Ausgabe in die richtige Reihenfolge in mein
ListIconGadget.

Ja, ganz schön verzwickt das ganze, aber leider brauche ich auch hier eine Lösung.

Mein Gedanke ist eine SQLite-Datenbank im Speicher in der ich alle gefunden Daten einfüge diese dann sortiere
und gruppiere und in das ListIconGadget einfüge.

Wie mache ich so etwas.

Freue mich schon auf deinen Schubser.

Gruß
gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von NicTheQuick »

Ich weiß nicht, ob SQLite das kann, aber bei SQL gibt es UNION.
Bild
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Re: SQlite nur ein Ausgabe pro Datum

Beitrag von walker »

Du kannst auch eine Abfrage mit Select über mehrere Tabellen machen ... allerdings ohne Kenntnis der Tabellen kann ich nichts genaueres sagen ...

Bsp: Select kasse.datum, kasse.abschluss, bank.datum, bank.waswaeisich from kasse, bank where kasse.datum=bank.datum group by kasse.datum ASC;
Antworten