Versio

Hoogste waarde

Overzicht Reageren

Jos Verra

Jos Verra

03/01/2012 18:16:36
Quote Anchor link
Goedeavond,
Ten eerste wens ik alle mensen van PHP Hulp de beste wensen.

Ik begin het jaar gelijk met een vraagje. Ik probeer een soort takensysteem te maken. En deze kunnen een aparte volgorde krijgen. Echter moet zodra er een nieuwe taak wordt toegevoegd de laatste ORDER+1 ingevuld worden.

Heeft iemand enig idee hoe ik dit doe. Is hier een functie voor. Iets in de trend van:

SELECT highest(`order`) FROM tasks
 
PHP hulp

PHP hulp

24/05/2012 21:40:34
Gesponsorde koppelingen:
 
Herman van Ree

Herman van Ree

03/01/2012 18:18:10
Quote Anchor link
SELECT MAX(order)
 
Noppes Homeland

Noppes Homeland

03/01/2012 18:24:38
Quote Anchor link
Het lijkt mij niet de juiste optie om gebruik te maken van MAX

Vertel eerst maar eens heel duidelijk wat "order" voorsteld en wat je er dan mee wilt gaan doen.

Een max trekken van iets en er dan iets bij optellen en dan gebruiken voor een PK en of UK is vragen om problemen. Je zult hiervoor een sequence meganisme moeten bouwen als je met mysql werkt althans. Andere database zijn daar al in voerzien.
 
Joren de Wit
Beheerder

Joren de Wit

03/01/2012 18:24:54
Quote Anchor link
Volgens mij zul je MAX() altijd in combinatie met GROUP BY moeten gebruiken, aangezien MAX() het maximum van een bepaalde groep bepaalt. Gangbaarder om de hoogste waarde in een kolom te bepalen is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT veldnaam
FROM tabelnaam
ORDER BY veldnaam DESC
LIMIT 1
 
Jos Verra

Jos Verra

03/01/2012 18:29:14
Quote Anchor link
Ik wil dus kijken wat de laagste prioriteit heeft (dus hoogste order/volgorde nr) en hierbij 1 optellen en vervolgens samen met de rest van in informatie INSERT-en.
 
Noppes Homeland

Noppes Homeland

03/01/2012 18:29:41
Quote Anchor link
Quote:
Volgens mij zul je MAX() altijd in combinatie met GROUP BY moeten gebruiken.


ligt er maar net aan hoe de select-clause er verder uit ziet..

Als je het aantal record in een tabel wilt weten dan doe je toch ook:
select count(1) aantalrecords from tabel

maar als je bijvoorbeeld per iets iets wilt weten ja dan moet je een group by gebruiken:
select iets,count(1) aantaliets from tabel group by iets

Maar het komt hier op neer, elke oplossing die wat gaat doen met de waarde waar het om gaat + iets is per definitie incorrect / foutgevoelig
Gewijzigd op 03/01/2012 18:32:35 door Noppes Homeland
 
- Raoul -
Redacteur

- Raoul -

03/01/2012 18:41:07
Quote Anchor link
Wat je ook kan doen, maar wat dan wel beetje meer werk vergt is een array maken en dan met de sort() functie werken.
 
Jos Verra

Jos Verra

03/01/2012 18:45:53
Quote Anchor link
Ik zoek dus meer een soort functie die dus gwn SELECT max(volgorde/order) FROM tasks en dat die dus gwn $order = 5;
ofzo terug geeft. Wil dus zo min mogelijk rest code hebben.

Toevoeging op 03/01/2012 18:50:37:

Ik kan ook gewoon de huidige volgorde uit lezen en ze stuk voor stuk opslaan met opgehoogde volgordeNr en dan als laatste de nieuwe. Maar het moet veel makkelijker kunnen of ben ik nou dom aan het praten
 
Noppes Homeland

Noppes Homeland

03/01/2012 20:22:29
Quote Anchor link
Verdiep je in hoe je op jouw database een sequence kan implementeren.

1 ding weet ik wel, dat je het voor mysql zelf in elkaar moet flansen, als je dat eenmaal hebt dan wil je ook geen auto_increment meer hebben.
 
Aad B

Aad B

03/01/2012 22:27:38
Quote Anchor link
Jos Verra op 03/01/2012 18:45:53:
Ik zoek dus meer een soort functie die dus gwn SELECT max(volgorde/order) FROM tasks en dat die dus gwn $order = 5;
Wanneer 2 gebruikers dit tegelijkertijd doen heb je een conflict met dezelfde uitkomst. @Internet Verslaafde: Idem dito en processen in php arrays met nog veel meer risico is knoeiwerk. Nog meer kans op conflicterende dubbelingen.
De beste manier is inderdaad een sequence bouwen in MySQL. In tegenstelling tot Oracle kent MySQL dit helaas niet default.
 



Overzicht Reageren