php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.05.2005, 12:40  
Erfahrener Benutzer
 
Registriert seit: 29.04.2005
Beiträge: 323
Dragon26mFR
Standard MySQL abfrage mit berechneter Sortierung

Gibt es eine möglichkeit wärend einer DB-Abfrage zu rechenen und die sortierung anhand der berechneten werte durchzuführen ???

Bsp.:

Tabelle1:
ID, wert1, wert2

In der abfrage sollen jetzt wert1 und wert2 zumbeispiel addiert werden.
und dann soll die ausgabe nach der summer von wert1 und wert2 aufsteigend sortiert ausgegeben werden.

Ist nur ein beispiel mein problem ist etwas komplexer beruht aber auf der selben logig. Es geht um eine 3D-entfernungsberechnung.
Ich habe in der DB 3 Koordinaten die sollen jetzt mit 3 Koords aus einer sessionvariable eine entfernung berechnen.
Formel:
$entfernung = round( (sqrt( pow( ($x1 - $x2),2 ) + pow( ($y1 - $y2),2 ) + pow( ($z1 - $z2),2 ) )), 2);
Die variablen mit 1 sind aus der session die mit 2 aus der DB.

Meine Frage ist sowas möglich und wenn ja wie ????
Dragon26mFR ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.05.2005, 13:31  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

na klar ist das möglich. wird zwar mit mysql eine relativ hässliche abfrage, aber immerhin.

http://dev.mysql.com/doc/mysql/en/ma...functions.html

wenn du sehr viele daten vergleichst, macht es evtl. sinn, temporäre tabellen zu verwenden - evtl. sogar eine eigene tabelle, die immer mit-aktualisiert wird.

übrigens solltest du $entfernung nur für die ausgabe runden - und für jede weitere berechnung das ungerundete ergebnis verwenden. kann mit der zeit fehleranfällig werden.
axo ist offline   Mit Zitat antworten
Alt 08.05.2005, 13:44  
Erfahrener Benutzer
 
Registriert seit: 29.04.2005
Beiträge: 323
Dragon26mFR
Standard

Danke für den tip mit dem runden aber die variable $entfernung wird nur einmal benötigt also dürfte das kein problem sein.

Mir dem link den du mir gepostet hast komme ich noch nicht ganz klar.
Aber ich werde mich da mal einlesen *g*

Danke
Dragon26mFR ist offline   Mit Zitat antworten
Alt 08.05.2005, 13:47  
Gast
 
Beiträge: n/a
Standard

Die SELECT-Syntax laut MYSQL-Manual:
.................................................. .......................................
Code:
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr, ...
    [INTO OUTFILE 'file_name' export_options
      | INTO DUMPFILE 'file_name']
    [FROM table_references
      [WHERE where_definition]
      [GROUP BY {col_name | expr | position}
        [ASC | DESC], ... [WITH ROLLUP]]
      [HAVING where_definition]
      [ORDER BY {col_name | expr | position}
/*--------------------------^^^^------------------------------------ !!! */
        [ASC | DESC] , ...]
      [LIMIT {[offset,] row_count | row_count OFFSET offset}]
      [PROCEDURE procedure_name(argument_list)]
      [FOR UPDATE | LOCK IN SHARE MODE]]
.................................................. .......................................
demnach ist z.B. folgendes machbar:
Code:
SELECT spalte1, spalte2 FROM tabelle
ORDER BY ABS(spalte1 - spalte2) DESC
Wenn es dir gelingt, dieses:
Code:
 round( (sqrt( pow( ($x1 - $x2),2 ) + pow( ($y1 - $y2),2 ) + pow( ($z1 - $z2),2 ) )), 2)
in eine korrekte MYSQL-expression zu bringen,
sollte auch folgendes möglich sein:
Code:
SELECT
   spalteX, spalteY,
   round( (sqrt( pow( ($x1 - $x2),2 ) + pow( ($y1 - $y2),2 ) + pow( ($z1 - $z2),2 ) )), 2) AS entfernung
ORDER BY entfernung
mfg ~dilemma~
  Mit Zitat antworten
Alt 08.05.2005, 13:51  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Dragon26mFR
Danke für den tip mit dem runden aber die variable $entfernung wird nur einmal benötigt also dürfte das kein problem sein.
genau auf diesem weg schleichen sich bugs gleich von anfang an in skripte ein. ich spreche wirklich aus erfahrung ... bei der nächsten änderung des skripts in ein paar wochen hast du nämlich völlig vergessen, dass du zum weiterrechnen die $entfernung nur zur ausgabe gerundet hast, verstehst die komplette zeile nicht mehr und bist froh, die variable $entfernung zu haben, und verwendest diese weiter. das machst du ein paar mal, und auf einmal hast du einen sauber gerundeten wert, der rechenfehler akkumuliert, über's ganze skript verteilt.

eine gute idee wäre es auf jeden fall eine funktion zu schreiben, die
berechne_entfernung($x,$y); lautet und die entfernung ungerundet berechnet.
dann kannst du $entfernung = round(berechne_entferunng($x1,$x2)) problemlos verwenden, ohne zu vergessen, was du da eigentlich machst.

mach doch einfach bei der ausgabe
echo number_format($entfernung, [zusätzliche Parameter aus dem manual suchen] ) ; ...
axo ist offline   Mit Zitat antworten
Alt 08.05.2005, 14:01  
Erfahrener Benutzer
 
Registriert seit: 29.04.2005
Beiträge: 323
Dragon26mFR
Standard

@axo
Ich gebe mich geschlage *g*
Deine argumente sind einfach zu überzeugend.
Danke
Werde es so machen wie du meintest. *g*

Naja dann such ich mal *g*

Thx @all
Dragon26mFR ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
MySQL Abfrage von Ver. 5 für Ver 3. des MySQL Servers FireFIghter Datenbanken 3 02.02.2007 17:18
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
MYSQL Abfrage // Sortierung geht nicht... PHP Tipps 2006 16 19.04.2006 22:25
mysql abfrage mqs PHP Tipps 2006 4 09.04.2006 17:57
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySQL Abfrage Problem. web2 PHP Tipps 2005-2 7 25.07.2005 11:07
Mysql Abfrage Datenbanken 4 27.02.2005 22:26
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql entfernungsberechnung, mysql pow, mysql group by with rollup sortieren nach summe, entfernungsberechnung mysql, mysql entfernung, http://www.php.de/datenbanken/22614-mysql-abfrage-mit-berechneter-sortierung.html, mysql entfernung berechnen, mysql rechnen runden, mysql berechneter wert in where, mysql rechnen abfrage, entfernungsberechnung php, sortierung php mysql abfrage, mysql rechnen und nach ergebnis sortieren, mysql nach berechneten werten sortieren, mysql sum runden, mysql sqrt pow, in my sql abfrage rechenn, mysql entfernung sortieren, summer errechnen mysql, with rollup mysql resultat abfrage

Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.