AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi in SQL dividieren mit Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

in SQL dividieren mit Delphi

Ein Thema von schrimm · begonnen am 16. Apr 2008 · letzter Beitrag vom 17. Apr 2008
Antwort Antwort
schrimm
(Gast)

n/a Beiträge
 
#1

in SQL dividieren mit Delphi

  Alt 16. Apr 2008, 19:53
Datenbank: MySQL • Version: 2.11.1 • Zugriff über: Query
Also ich habe hier folgendes Problem:
Ich soll eine SQL Abfrage erstellen, mit der absolute und relative Häufigkeiten angezeigt werden.
Mein Problem ist nun, dass wenn ich etwas dividiere, oder z.b. *0.001 rechne, die Spalte in Delphi einfach nicht da ist.
bei phpmyadmin funktioniert das.
zur Orientierung mal die procedure:
Delphi-Quellcode:
var monat:string;
begin
 monat:=inttostr(CBmonat.Itemindex+1);
 if length(monat)<2 then
  monat:='0'+monat;
 with DM1.Qstatistik do
  begin
   close;
   sql.text:='SELECT count(GID) AS absolut, ((SELECT Count(GID) FROM gespraech)*(count(GID)))AS relativ, (SELECT Count(GID) FROM gespraech) AS gesamt '+
             'FROM gespraech INNER JOIN vorwahl '+
             'ON vorwahl.VORID=gespraech.VORID '+
             'WHERE vorwahl.art='+#39+'F'+#39+
             ' AND datum like '+#39+'2008-'+monat+'-%'+#39;
   open;
   memo1.text:=sql.text;
   Lgesamt.caption:='gesamt: '+Fields[0].AsString;
  end;//with Qstatistik
wenn ich das "100/" weglasse, funktioniert es ohne Probleme, aber dann sind logischer weise die Ergebnisse falsch.
Das ganze ist für die Schule und die berechnung muss zwingend komplett mit SQL erfolgen.
Wäree cht nett, wenn Lösungen oder auch schon Lösungsansätze da wären
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: in SQL dividieren mit Delphi

  Alt 16. Apr 2008, 20:06
Irre ich mich - oder steht in deinem Code nirgendwo ein "100/"?

PS: Überdenke mal deine DB-Struktur, wenn du Datumsabfragen mit LIKE durchführen musst...
PPS: Benutze Parameter
  Mit Zitat antworten Zitat
schrimm
(Gast)

n/a Beiträge
 
#3

Re: in SQL dividieren mit Delphi

  Alt 16. Apr 2008, 20:33
stimmt,d as mit 100 hatte ich zu testzwecken weggenommen und hier dann vergessen *sorry*
Delphi-Quellcode:
'SELECT count(GID) AS absolut, (100/(SELECT Count(GID) FROM gespraech)*(count(GID)))AS relativ, (SELECT Count(GID) FROM gespraech) AS gesamt '+
             'FROM gespraech INNER JOIN vorwahl '+
             'ON vorwahl.VORID=gespraech.VORID '+
             'WHERE vorwahl.art='+#39+'F'+#39+
             ' AND datum like '+#39+'2008-'+monat+'-%'+#39;
was ist schlimm, wenn man das mit like machen muss(bin recht neu auf dem gebiet), die Monate sollen dynamisch ausgewählt werden können.
das ist aber erstmal egal, so lange es geht.

es geht erstmal darum, dass ich (egal wie, hauptsache mit SQL) erstmal dividieren kann, oder zumindest irgend etwas anderes, wo das ergebnis dann die Prozente sind.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: in SQL dividieren mit Delphi

  Alt 16. Apr 2008, 20:41
SQL-Code:
SELECT
    count(g1.GID) AS absolut,
    (100/(SELECT Count(g2.GID) FROM gespraech g2)*(count(g1.GID))) AS relativ,
    (SELECT Count(g3.GID) FROM gespraech g3) AS gesamt
FROM
    gespraech g1
        INNER JOIN vorwahl ON vorwahl.VORID = g1.VORID
WHERE
     vorwahl.art=:art AND
     YEAR( g1,datum) = :jahr and Month( g1.datum) = :monat;
Markus Kinzler
  Mit Zitat antworten Zitat
schrimm
(Gast)

n/a Beiträge
 
#5

Re: in SQL dividieren mit Delphi

  Alt 16. Apr 2008, 21:03
danke mkinzler, muss erstmal schauen, wie das genau funktioniert
jedoch kommen in der DB Grid wieder nur 2 Spalten und die relativ fehlt.
Ich bin mir auch nicht ganz sicher, wie ich das bei delphi einbinden kann.(hab erstma ohne WHERE gemacht)
Delphi-Quellcode:
sql.text:=
'SELECT '+
' count(g1.GID) AS absolut, '+
' (100/(SELECT Count(g2.GID) FROM gespraech g2)*(count(g1.GID))) AS relativ, '+
' (SELECT Count(g3.GID) FROM gespraech g3) AS gesamt '+
'FROM '+
' gespraech g1 '+
' INNER JOIN vorwahl ON vorwahl.VORID = g1.VORID ';
das ist aber glaube falsch
(sorry, aber hab bisher ind er SChule nichts anderes beigenbracht bekommen und ne andere variante fällt mir nicht ein)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: in SQL dividieren mit Delphi

  Alt 16. Apr 2008, 21:10
Die Parameter kannst du mit
DM1.Qstatistik.ParamByName('<Name>').Value := ...; bzw.
DM1.Qstatistik.ParamByName('<Name>').as<Typ> := ...; füllen.

Aber es ist komsich, das das Feld verschluckt wird. Hast du die Abfrage mal in einem Admin-Tool getestet?
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: in SQL dividieren mit Delphi

  Alt 17. Apr 2008, 00:02
Benutzt du wirklich MySQL 2.11.1? Dann solltest du vielleicht mal ein Update machen auf Version 5.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz