Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Gerundete Spalten (https://www.delphipraxis.net/123097-gerundete-spalten.html)

Medium 27. Okt 2008 16:49

Datenbank: MySQL • Version: 4.1 • Zugriff über: Zeos

Gerundete Spalten
 
Ich versuche gerade ein paar als Double angelegte Spalten einer Tabelle zur Anzeige gerundet zu selektieren, jedoch haut mir MySQL das Statement immer um die Ohren, obwohl ich der Meinung bin alles nach der MySQL Referenz gebaut zu haben. Hier zunächst mal das Statement:
SQL-Code:
SELECT
  rp.Komp_Nr AS Komp_Nr,
  rp.Prio AS Prio,
  rp.Rohstoff AS Rohstoff,
  qt.Text AS Quelle,
  CONVERT(rp.Anteil_S, {X}REAL(15,2)) AS Anteil_S,
  CAST(rp.Anteil_I AS FLOAT(15,2)) AS Anteil_I,
  rp.Status AS Status,
  rp.Mischzeit AS Mischzeit,
  rp.ReaktZeit AS ReaktZeit,
  rp.Tank_Nr AS Tank_Nr,
  rp.Hand_Auto AS Hand_Auto
FROM
  rpoproz AS rp JOIN qtext AS qt
  ON
    rp.Tank_Nr = qt.Nummer
WHERE
  rp.Rez_Nr = :rn
ORDER BY
  Komp_Nr
Die interessanten Zeilen sind die mit "CAST" bzw. "CONVERT". Ich habe mittlerweile einige Kombinationen aus CAST/CONVERT mit den Typen Numeric, Float, Real und Decimal durch, aber jedes Mal haut es mich an der gekennzeichneten Stelle {X} mit einem SQL-Syntax Error raus. (Ich hab beide Varianten mit CAST und CONVERT nur zur Anschauung hier gemischt.)

Kann wer meinen vermutlich sehr dämlichen Fehler entdecken, oder aber kennt jemand einen hübscheren Weg auf N Stellen nach dem Komma gerundete Werte zu bekommen?

DeddyH 27. Okt 2008 17:03

Re: Gerundete Spalten
 
Versuch es mal mit einem cast auf decimal.
SQL-Code:
 SELECT cast( 3.1415927 AS decimal( 3, 2 ) ) //3 Stellen insgesamt, 2 nach den Komma

Medium 27. Okt 2008 17:11

Re: Gerundete Spalten
 
Diese Kombi hatte ich auch schon, leider ohne Erfolg. Auch ein Ändern der Genauigkeit von den üppigen 15 Stellen auf z.B. 3 hat leider nichts gebracht. Ich seh einfach ums Verrecken den Fehler nicht :(.

alzaimar 27. Okt 2008 17:44

Re: Gerundete Spalten
 
Kommentiere mal alle Spalten mit Ausnahme der beiden aus. Vielleicht liegt es z.B. am Feldnamen 'Text'.

Medium 27. Okt 2008 20:16

Re: Gerundete Spalten
 
Das mit dem 'Text' seh ich ja jetzt erst. Verdammte Schlüsselwörter, spucken einem doch immer mal wieder kräftig in die Suppe wenn man alte Paradox DBs nach SQL überführt :). Das klingt recht plausibel, und wenn ich mich morgen Nachmittag hier nicht noch mal verzweifelt einfinde war das die Lösung. Besten Dank!

Medium 28. Okt 2008 13:17

Re: Gerundete Spalten
 
Das war es leider doch nicht :(. Sowohl das Herausnehmen der Zeile mit 'Text', als auch das Einfassen der Bezeichner in Backticks hat keinerlei Änderung im beschriebenen Fehler bewirkt.

Ich werfe mal die Create Statements der beiden betroffenen Tabellen hier rein, und es wäre super wenn sich jemand fände obiges Select darüber auszuführen, und zu schauen ob der Fehler reproduzierbar ist. Ich bin etwas ratlos :gruebel:
SQL-Code:
CREATE TABLE `qtext` (
  `Nummer` int(11) NOT NULL default '0',
  `Text` varchar(40) default NULL,
  PRIMARY KEY (`Nummer`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `rpoproz` (
  `Komp_Nr` int(11) NOT NULL default '0',
  `Rez_Nr` int(11) NOT NULL default '0',
  `M_Nr` int(11) NOT NULL default '0',
  `Rohstoff` varchar(25) default NULL,
  `Tank_Nr` smallint(6) default NULL,
  `Anteil_S` float default NULL,
  `Anteil_I` float default NULL,
  `Ruehrw` int(11) default NULL,
  `Status` smallint(6) default NULL,
  `Dichte` float default NULL,
  `Hand_Auto` char(1) default NULL,
  `Prio` int(11) default NULL,
  `Mischzeit` int(11) default NULL,
  `ReaktZeit` int(11) default NULL,
  PRIMARY KEY (`Komp_Nr`,`Rez_Nr`,`M_Nr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Neisklar 28. Okt 2008 14:17

Re: Gerundete Spalten
 
Warum nicht einfach:
SQL-Code:
ROUND(rp.Anteil_I,2) AS Anteil_I

Medium 28. Okt 2008 14:36

Re: Gerundete Spalten
 
Weil die "dürftige" (um es mal nett zu sagen) deutsche Hilfe zu MySQL nicht ein einziges Wort darüber verliert, dass man die Stellenanzahl angeben kann :? Das funktioklappt prächtig, besten Dank!
(Ich geb's zu, man hätte es einfach mal drauf ankommen lassen können und es probieren, aber ich war so perplex ob des o.g. Fehlers, darauf kam ich nicht mehr.)

Neisklar 28. Okt 2008 16:56

Re: Gerundete Spalten
 
Ohne drauf rumhacken zu wollen:
http://dev.mysql.com/doc/refman/5.1/...functions.html

steht alles drin :)

Medium 28. Okt 2008 17:58

Re: Gerundete Spalten
 
Das war sogar der 2. Link bei einer Googelei nach "mysql round" :oops:. Ich hatte nur den ersten betrachtet, da er das Thema explizit zu behandeln schien, und ich irgendwie noch immer Gedanklich bei cast bzw. convert war. Asche auf mein verwirrtes Haupt :)

Trotzdem würde mich noch immer interessieren, was in meinem Statement oben nun falsch sein soll, das Problem an sich ist aber erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.
Seite 1 von 2  1 2      

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