Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zahl suchen wie oft sie vorkommt ? (https://www.delphipraxis.net/75300-zahl-suchen-wie-oft-sie-vorkommt.html)

Vader 17. Aug 2006 11:14

Datenbank: Paradox • Version: 7 • Zugriff über: TQuery

Zahl suchen wie oft sie vorkommt ?
 
hallo,

habe eine datenbank mit 6 feldern ,wo ich die lottozahlen speichere, ist es möglich in der datenbank zu suchen wie oft zb. die nummer 13 gekommen ist ?
mfg vader

Muetze1 17. Aug 2006 11:17

Re: Zahl suchen wie oft sie vorkommt ?
 
Ja, ist es.

mkinzler 17. Aug 2006 11:18

Re: Zahl suchen wie oft sie vorkommt ?
 
SQl kennt Aggrgatfunktioen wie z.B. SUM()

pacman1986 17. Aug 2006 11:21

Re: Zahl suchen wie oft sie vorkommt ?
 
willst du über sql darauf zugreifen ?

mkinzler 17. Aug 2006 11:24

Re: Zahl suchen wie oft sie vorkommt ?
 
Zitat:

willst du über sql darauf zugreifen ?
Zitat:

Datenbank: Paradox, Version: 7, Zugriff über: TQuery

DGL-luke 17. Aug 2006 11:37

Re: Zahl suchen wie oft sie vorkommt ?
 
SQL-Code:
SELECT Count(feld_mit_zahlen) FROM tabelle_mit_lotto WHERE feld_mit_zahlen = 13
wenn du alle sechs felder überprüfen willst, musst du entweder count(feld1)+count(feld2)+... verwenden oder die feinheiten von SQL, die ich noch nicht kenne.

Jürgen Thomas 17. Aug 2006 11:53

Re: Zahl suchen wie oft sie vorkommt ?
 
Es müsste auch so gehen:
SQL-Code:
SELECT COUNT(*) FROM tabelle_mit_lotto WHERE (Feld_1 = 13) OR (Feld_2 = 13) OR ... (Feld_6 = 13)
Alternativ:
Zitat:

Zitat von DGL-luke
wenn du alle sechs felder überprüfen willst, musst du entweder count(feld1)+count(feld2)+... verwenden oder die feinheiten von SQL, die ich noch nicht kenne.

Wäre es wegen der Notwendigkeit, alle sechs Felder zu überprüfen, nicht einfacher, für jede Zahl ein eigenes Datenfeld zu nehmen: Feld__1, Feld__2 ... Feld_49 und als Feldinhalte 'gezogen', 'Zusatzzahl', 'kein Treffer'vorzusehen? (Die möglichen Feldinhalte sollten natürlich verkürzt werden als short oder char.)

Dann könnte man auswerten:
SQL-Code:
SELECT COUNT(*) FROM tabelle_mit_lotto WHERE Feld_13 = 'gezogen'
Übrigens: Lottozahlen haben kein Gedächtnis. Auch wenn eine Zahl extrem überdurchschnittlich oft gezogen wurde, ist die Trefferwahrscheinlichkeit am nächsten Sonnabend unverändert 6 von 49.

Jürgen

Nachtrag:
Zitat:

Zitat von shmia
Da nimmst du besser 2 Tabellen:
Code:
***Tabelle Ziehung***
***Tabelle Zahlen***
SQL-Code:
SELECT Zahl, Count(*) AS Anzahl FROM Zahlen
GROUP BY Zahl
ORDER BY Zahl

Au ja, diese Idee klingt noch besser als meine Alternative.

shmia 17. Aug 2006 12:27

Re: Zahl suchen wie oft sie vorkommt ?
 
Zitat:

Zitat von Vader
hallo,

habe eine datenbank mit 6 feldern ,wo ich die lottozahlen speichere, ist es möglich in der datenbank zu suchen wie oft zb. die nummer 13 gekommen ist ?
mfg vader

Da nimmst du besser 2 Tabellen: :warn:

Code:
***Tabelle Ziehung***
Feldname      Datentyp
=======================
Datum         DATE      (Primärschlüssel)
Bermerkung    VARCHAR(200)

***Tabelle Zahlen***
Feldname      Datentyp
=======================
Datum         DATE      (Primärschlüssel)
Zahlpos       INT       (Primärschlüssel) 1-6 und 7 für die Zusatzzahl
Zahl          INT       =die gezogene Zahl
Dann braucht du später nur noch
SQL-Code:
SELECT Zahl, Count(*) AS Anzahl FROM Zahlen
GROUP BY Zahl
ORDER BY Zahl
und du bekommt eine Liste mit den Häufigkeiten der gezogenen Zahlen. :tongue:

PS:
Wenn du für den Datentyp INT einen kleineren Datentyp findest (TINYINT, SMALLINT), dann
braucht die Datenbank weniger Platz

Vader 17. Aug 2006 14:51

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo jürgen thomas

hab das so probiert aber es kommt der fehler " das feld datum wurde nicht gefunden "
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form1.Query1.Close;
  form1.Query1.SQL.Text := 'SELECT COUNT(*) FROM lotto WHERE (Z1 = 13) OR (Z2 = 13) OR (Z3 = 13)OR (Z4 = 13)OR (Z5 = 13)OR (Z6 = 13)';
  form1.Query1.Open
end;
ich hab nämlich noch ein feld mit dem ziehungsdatum !


das mit den 2 tabellen ist mir noch unklar möchte das einmal wie du sagst probieren
mfg vader

mschaefer 17. Aug 2006 15:03

Re: Zahl suchen wie oft sie vorkommt ?
 
Moin und Frage:

Wie soll Dein Datum angezeigt werden (wo auch immer), wenn kein Feld-Datum in der SQL ist?

Grüße // Martin

Jürgen Thomas 17. Aug 2006 15:26

Re: Zahl suchen wie oft sie vorkommt ?
 
Zitat:

Zitat von Vader
hab das so probiert aber es kommt der fehler " das feld datum wurde nicht gefunden "
Delphi-Quellcode:
form1.Query1.SQL.Text := 'SELECT COUNT(*) FROM lotto WHERE (Z1 = 13) OR (Z2 = 13) OR (Z3 = 13)OR (Z4 = 13)OR (Z5 = 13)OR (Z6 = 13)';
ich hab nämlich noch ein feld mit dem ziehungsdatum !

Zitat:

Zitat von mschaefer
Wie soll Dein Datum angezeigt werden (wo auch immer), wenn kein Feld-Datum in der SQL ist?

Die Query liefert mit diesem SQL-Text nur ein Feld zurück, nämlich COUNT(*), das auch benannt werden kann:
SQL-Code:
SELECT COUNT(*) AS Anzahl FROM lotto WHERE (Z1 = 13) OR (Z2 = 13) OR (Z3 = 13)OR (Z4 = 13)OR (Z5 = 13)OR (Z6 = 13)
Außerdem ist mir (und offensichtlich auch Martin) völlig unklar, an welcher Stelle und zu welchem Zweck Du eine Anzahl aus vielen Datensätzen mit vielen Feldinhalten 'Datum' in der Anzeige verbinden willst. Jürgen

hoika 17. Aug 2006 15:43

Re: Zahl suchen wie oft sie vorkommt ?
 
Hallo,

setze mal nen breakpoint,
dann wirst du sehen,
dass der Fehler gar nicht dort kommt.


Heiko

Vader 17. Aug 2006 16:51

Re: Zahl suchen wie oft sie vorkommt ?
 
ich will ja kein datum anzeigen wenn ich die häufigkeit der zahl 13 suche ,der fehler kommt wenn ich den code ausführe, ich weiß auch nicht warum, weil ich habe nur die 6 felder, z1 bis z6 angegeben beim sqlcode ?
mfg vader

Vader 17. Aug 2006 16:57

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo,

es funktioniert, es kommt zwar die fehlermeldung das "feld datum wurde nicht gefunden", aber dann wird das feld count
mit der häufigkeit der zahl 13 angezeigt !!
mfg vader

mkinzler 17. Aug 2006 17:37

Re: Zahl suchen wie oft sie vorkommt ?
 
Welches datum soll er auch anzeigen. Die berechnete Anzahl bezieht sich auch auf verschiedene Datumswerte.
Ist irgendeien Anzeige Komponente mit dem Datumsfeld verknüpft?

hoika 17. Aug 2006 18:14

Re: Zahl suchen wie oft sie vorkommt ?
 
Hallo Vader,

sicher, dass der Fehler genau dort ?
Breakpoint auf form1.Query1.Open (F5),
dann laufen lassen, mit F8 über Open drüberweg
und mit F7 weiter.

Wo ist denn der Code, wo du das in das Label (?) einträgst ?


Heiko

Vader 17. Aug 2006 18:53

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo hoika,

mache das später mit den debugger,

möchte das mit einen editfeld machen weil ich will ja verschiedene zahlen abrufen wie oft sie gekommen sind,hab das so probiert aber geht nicht


Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form1.Query1.Close;
  form1.Query1.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM lotto WHERE (Z1 = edit1.text) OR (Z2 = edit1.text) OR (Z3 = edit1.text)OR (Z4 = edit1.text)OR (Z5 = edit1.text)OR (Z6 = edit1.text)';
  form1.Query1.Open
end;

mfg vader

mkinzler 17. Aug 2006 19:02

Re: Zahl suchen wie oft sie vorkommt ?
 
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form1.Query1.Close;
  form1.Query1.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM lotto WHERE (Z1 = :Zahl) OR (Z2 = :zahl) OR ...
  Form.Query1.ParamByName('zahl').Value := edit1.Text;
  form1.Query1.Open;
end;

Vader 17. Aug 2006 20:03

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo mkinzler

es kommt der fehler: " keine übereinstimmung der typen im ausdruck " ???


Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form1.Query1.Close;
  form1.Query1.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM lotto WHERE (Z1 = :zahl) OR (Z2 = :zahl) OR (Z3 = :zahl)OR (Z4 = :zahl)OR (Z5 = :zahl)OR (Z6 = :zahl)';
  Form1.Query1.ParamByName('zahl').Value := edit1.Text;
  form1.Query1.Open
end;
mfg vader

mkinzler 17. Aug 2006 20:12

Re: Zahl suchen wie oft sie vorkommt ?
 
Setze den Typ des Parameters auf ptInteger und weise am besten mit .asString statt .Value zu.

Vader 17. Aug 2006 21:04

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo mkinzler

meinst du das so :

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  zahl: integer;
begin
form1.Query1.Close;
  form1.Query1.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM lotto WHERE (Z1 = :zahl) OR (Z2 = :zahl) OR (Z3 = :zahl)OR (Z4 = :zahl)OR (Z5 = :zahl)OR (Z6 = :zahl)';
  Form1.Query1.ParamByName('zahl').asString := '%'+Edit1.Text + '%';
  form1.Query1.Open
end;
es kommt der gleiche fehler
mfg vader

mkinzler 17. Aug 2006 21:06

Re: Zahl suchen wie oft sie vorkommt ?
 
Laß die Prozent hier weg, der Parameter ist ja vom Typ Integer.
Zitat:

Delphi-Quellcode:
Form1.Query1.ParamByName('zahl').asString := '%'+Edit1.Text + '%';


Vader 17. Aug 2006 21:27

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo
Delphi-Quellcode:
 Form1.Query1.ParamByName('zahl').asString := Edit1.Text ;
das geht nicht,kommt immer wieder der gleiche fehler
mfg vader

mkinzler 17. Aug 2006 21:40

Re: Zahl suchen wie oft sie vorkommt ?
 
Delphi-Quellcode:
Form1.Query1.ParamByName('zahl').Value := StrToInt(Edit1.Text);

Vader 17. Aug 2006 21:59

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo mkinzler,
danke
mfg vader

Vader 18. Aug 2006 16:48

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo

hoika schreibt:

Zitat:

sicher, dass der Fehler genau dort ?
Breakpoint auf form1.Query1.Open (F5),
dann laufen lassen, mit F8 über Open drüberweg
und mit F7 weiter.

Wo ist denn der Code, wo du das in das Label (?) einträgst ?
wie meinst du das dann laufen lassen, muß ich nach den setzen des breakpoint's F9 drücken oder was ???

ja, er bleibt bei "form1.Query1.Open" stehen, und was kann ich daraus lesen ???
mfg vader

Vader 19. Aug 2006 10:59

Re: Zahl suchen wie oft sie vorkommt ?
 
hallo hoika,

ich glaube du weißt warum der fehler kommt,was kann ich tun ?
mfg vader


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz