[PHP/MYSQL] Rekenen in mysql

Pagina: 1
Acties:

  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Topicstarter
Ik ben weer eens aan het klooien met mysql en php en ik kom niet uit het volgende:

PHP:
1
2
3
4
5
6
7
8
$query "SELECT *
        FROM utt_lepartners
        ORDER BY (unique_incoming / unique_outgoing * ratio AS forumula) DESC";
$result = mysql_query($query);
          while ($row = mysql_fetch_assoc($result)) {
          echo "$row->username";
          }
}


De line die begint met order by geeft een error. Ik heb al op mysql en op google gezocht maar ik kan de juiste syntax niet boven water krijgen. Weet iemand misschien hoe dit werkt, het lijkt me dat de bedoeling duidelijk moet zijn? Ook suggesties mbt de optimalisatie van de code zijn ontzettend welkom. Ik weet het echt niet meer.

aka Crypto T


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

berekening in je SELECT doen en dan pas ordenen

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Het veld waarop je ordent, moet in uw select-clause voorkomen... Dat is bij u niet het geval. Zet diezelfde 'berekening' ook in uw select (met een alias) en orden dan op die alias.

https://fgheysels.github.io/


Verwijderd

Da's niet de bedoeling, want je kunt alleen op kolommen sorteren. Als je echter deze berekening als kolom opneemt, zou je er wel op moeken kunnen sorteren.

Succes :)
edit:

Woei ... wat zijn we hulpvaardig! Allemaal .... en dan nog tegelijk ook! ;)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Het antwoord staat er nu 3 maal, dus even wat anders....

http://gerard.yoursite.nl/got/php-tiplist/#4 ;)
(slaat op de echo)

Programmer - an organism that turns coffee into software.


  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Topicstarter
hmmmm... geprobeerd maar het werkt ook niet.
dit bedoel je toch acm?

PHP:
1
2
3
$query "SELECT (unique_incoming / unique_outgoing * ratio AS forumula)
        FROM utt_lepartners
        ORDER BY formula DESC";


???

aka Crypto T


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

haakjes moeten anders denk ik

Doet iets met Cloud (MS/IBM)


Verwijderd

Volgens mij heeft MySQL nog weleens problemen met een alias in de ORDER BY clause. Herhaal eens de hele expressie ook daar (zonder AS ...).

  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Topicstarter
ik heb inmiddels alle mogelijke manier geprobeerd (haakjes anders, expressie herhaald in de order by) maar kom er nog steeds niet uit. Iemand?

aka Crypto T


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
of
code:
1
ORDER BY 2

Dan geef je aan dat hij op het 2de veld moet sorteren. (Als dat lukt in MySQL natuurlijk). 't Kan ook zijn dat het eerste veld 0 is, dan moet je natuurlijk ORDER BY 1 doen om op het 2de veld te sorteren. (Dan heb je ook die alias niet meer nodig).

D2k schreef op 14 augustus 2002 @ 16:23:
haakjes moeten anders denk ik

Dat is natuurlijk ook waar.

code:
1
SELECT (veld / veld2) AS bla

https://fgheysels.github.io/


  • Mini-me
  • Registratie: November 1999
  • Niet online
Lol gebruik anders een spellingscontrole ofzo ;)
Eerst noem je je veld 'forumula' (volgens mij bedoel je gewoon 'formula') en vervolgens roep je hem aan met.. inderdaad: 'formula'
:)

Verwijderd

Ik ben niet echt bekend met MySQL, maar in je laatste stuk broncode staat wel een typfout: forumula.
Verder zou ik de haakjes rond de berekening zetten:
SELECT (unique_incoming / unique_outgoing * ratio) AS FORMULA .....

  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Topicstarter
Die spelfout had ik inmiddels ook al gevonden, dit heb ik inmiddels nu en ik kom er nog steeds niet helemaal uit..

PHP:
1
2
3
$query "SELECT (unique_incoming / unique_outgoing * ratio) AS formula
        FROM utt_lepartners
        ORDER BY formula,unique_incoming DESC";

aka Crypto T


  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Topicstarter
Heel erg raar...

PHP:
1
2
3
SELECT (unique_incoming / unique_outgoing * ratio) AS formula
FROM utt_lepartners
ORDER BY formula DESC


werkt gewoon goed als ik hem in mysql uitvoer. De database connectie doet het ook gewoon (de andere queries werken perfect). Wat zou het allemaal nog meer kunnen zijn?

aka Crypto T


  • troxx
  • Registratie: Mei 2001
  • Laatst online: 13-01-2020

troxx

Vechain maximalist

Topicstarter
* troxx heeft het opgelost... ik dank een ieder

aka Crypto T


Verwijderd

Vertel vertel! Enlighten us with your solution!
/me is nou wel nieuwsgierig ...

Verwijderd

je kunt alleen sorteren op kolommen die voorkomen in de select clause. Wil je dus sorteren op unique_incoming, dan moet deze in de SELECT clause opgenomen worden.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 14 augustus 2002 @ 18:18:
je kunt alleen sorteren op kolommen die voorkomen in de select clause. Wil je dus sorteren op unique_incoming, dan moet deze in de SELECT clause opgenomen worden.

Deze query werkt prima:
select TopicID from F_Topics ORDER BY lastmodified;
En deze trouwens ook:
select TopicID, (NOW() - Lastmodified) AS blaat from F_Topics ORDER BY blaat;
Pagina: 1