Layoutprobleme? - Styleswitcher!
![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 1.539
| Ich habe in der Datenbank den Typ decimal(5,2) benutzt. Für die folgende Verarbeitung in PHP wäre es schön, wenn ich die Zahl in den Teil vor und nach dem Komma aufsplitten kann. Natürlich geht das in PHP - das ist kein Problem; ich würde das gerne direkt bei der db-Abfrage machen. Ich denke mal, dass das geht, aber ich wüsste jetzt nicht wie... Hat jmd. eine Idee?
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw. Danke! |
| | |
| | Nach oben #2 |
| Neuer Benutzer Registriert seit: 05.01.2008
Beiträge: 1
| Ich gehe mal vom MySQL aus: SELECT <spalte>, truncate(<spalte>,0),abs((<spalte>-truncate(<spalte>,0))*100) FROM <tabelle> WHERE 1 Bitte ersetze <spalte> und <tabelle> mit Deinen Werten. |
| | |
| | Nach oben #3 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 745
| Hi Jann Hendrik. Für die Ganzzahl nimmst du einfach FLOOR und für den Rest eben den Wert - den Ganzzahl-Wert oder vielleicht geht auch Modulo 1? Also irgendwie so: Code: SELECT
FLOOR(`zahl`) + (`zahl` < 0) AS ganzzahl,
CAST((`zahl` % 1) * 100 AS UNSIGNED) AS rest Bast PS: Da war wohl einer schneller. Willkommen Georg. TRUNCATE() ist schöner, ja. Und, die Funktion hätte wohl auch eher etwa so aussehen müssen: Code: FLOOR(`zahl`) + (`zahl` < 0 AND `zahl` != FLOOR(`zahl`)) Geändert von Basti (12.01.2008 um 19:01 Uhr). |
| | |
| | Nach oben #4 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 1.539
| Ich habe mich für basis Version entschieden. Auf floor() hätte ich auch selbst kommen können... Danke!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw. Danke! |
| | |
| | Nach oben #5 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 745
| TRUNCATE() ist doch wirklich besser geeignet. Lediglich, wenn die Zahlen alle positiv ist, ist es Wurscht, da du dir da dieses +1 sparen kannst. Aber auch dann würde ich auf TRUNCATE setzen, andererseits aber bei Modulo bleiben: Code: SELECT
TRUNCATE(`zahl`, 0) AS `ganzzahl`,
(`zahl` % 1) * 100 AS `rest` |
| | |
| | Nach oben #6 |
| Martin Eisengardt Registriert seit: 30.03.2006 Ort: Pfinztal
Beiträge: 350
| Hier der Hinweis, dass man sowas nicht ein Datenbank-System machen lassen sollte. Alle Form von mathematischen oder sontigen Verwurschtelungen sind sogar in PHP in aller Regel besser aufgehoben. Das sollte man beachten, wenn man zum Beispiel viele Datensätze verarbeitet oder einem der Hoster sagt "Was treibst du denn da?". Und wenn man das nicht weiterverarbeitet, sondern beispielsweise in eine HTML-Tabelle direkt verarbeitet, sind sogar die String-Funktionen (replace "." mit "</td><td>" oder sowas) auch ziemlich gut zu verwenden.
__________________ Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
| | |
| | Nach oben #7 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 1.539
| Zitat:
Ich bin bisher davon ausgegangen, dass der db-Server das ein wenig schneller hinbekommt als ein nachgeschaltetes PHP-Skript. Wobei das bei meinen 70 Datensätzen, um die es hier konkret geht recht egal sein dürfte...
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw. Danke! | |
| | |
| | Nach oben #8 |
| Martin Eisengardt Registriert seit: 30.03.2006 Ort: Pfinztal
Beiträge: 350
| Das kommt stark auf das DB-System an und auf das System, das hinten dran ist. Wenn man einige wenige Datensätze hat, die verrechnet werden sollen, kann das das DB-System sehr fix. Nehmen wir das Beispiel, dass die Treffermenge aufgrund einer Rechenoperation eingeschränkt werden soll, also ein Ergebnis nur dann zurückgegeben werden soll, wenn "a+b>c" ist. Sowas das DB-System machen lassen zu wollen, ist kontraproduktiv, da das immer die Verwendung von Indices u.ä. aushebelt. Wenn man aber beispielsweise geschickt sortiert und dann einen Treiber bzw. Funktionen nutzt, die immer nur einen Teil der Ergebnisse laden und dann abbrechen, sobald die Bedingung nicht mehr erfüllt ist (was das PHP-Script herausfinden würde), kommt man in aller Regel schneller zum Ziel. Wie du sagst: Bei deinen 70 Datensätzen dürfte das eher egal sein. Aber solche komplexe Rechenperationen (und aus DB-Sicht ist das komplex) oder irgendwelche String- oder Regex-Operationen sollte man einfach vermeiden. Es gibt einen zweiten Aspekt, der besonders wichtig werden kann. Sobald man eine Verbindung hat und gleichzeitig Updates durchführt, erzeugt jedes DB-System eine Art Lock, um konkurrierende Zugriffe zu vermeiden. Wenn man nun aufwendige Selects baut, kann das DB-System nie optimal arbeiten, da gleichzeitig Daten zum Lesen und Schreiben gesperrt werden über einen vergleichsweise langen Zeitraum. Der dritte grund ist die Systemarchitektur. Gerade auch Hoster trennen oft Webserver physisch von der Datenbank. Dann ist es nicht mehr ganz so egal, wo die Last erzeugt wird. Ein Script kann in einer Millisekunden fertig sein. Wenn es aber permanent 250 Millisekunden auf der Datenbank rumrödelt, wird der Hoster irgendwann bei vielen Besuchern intervenieren.
__________________ Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
| | |
| | Nach oben #9 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 1.539
| Danke dir für die Erläuterung!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw. Danke! |
| | |
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Modifier haben einen Wert, obwohl keine gedrückt sind | materthron | Desktop-Applikationen und Grafik | 3 | 06.11.2005 17:28 |
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:24 Uhr.
Nach oben







