Voor een klein hobbyprojectje heb ik een paar honderd stuks hardware in de tabel "hardware" gezet. Ik ben op zoek naar de positie van een record in de gehele database zodat ik voor mn pagination weet op welke pagina hij komt. Ik zou dit natuurlijk in PHP kunnen doen door alle data in te laten en dan de positie te zoeken maar dat is nogal CPU/geheugen intensief en (mijn inziens) totaal onnodig. Een ander truukje zou het IdHardware veld kunnen zijn echter wordt er wel eens wat verwijderd en dan klopt het niet meer (ID's niet meer oplopend)
Als ik wat queries gevonden op internet probeer dan krijg ik wat enge fouten dat de query niet geldig is. Mogelijk dat dit te maken heeft met de versie van MariaDB (is 10.3.29).
De tabel heeft 2 velden:
IdHardware - INT (auto increment)
Naam - VARCHAR
Ik heb hierin de volgende waarden staan (voor dit voorbeeld):
IdHardware - Naam
1 - Router
2 - Switch 8 poort
3 - Switch 16 poort
6 - Switch 24 poort
7 - Muis
9 - Toetsenbord
Als ik dit sorteer op Naam krijg ik het volgende:
IdHardware - Naam
7 - Muis
1 - Router
2 - Switch 8 poort
3 - Switch 16 poort
6 - Switch 24 poort
9 - Toetsenbord
Nu wil ik de positie weten in de database van record "1 - Router" van de gesorteerde naam, in dit geval zal dat dus 2 moeten zijn.
Positie - IdHardware - Naam
1 - 7 - Muis
2 - 1 - Router
3 - 2 - Switch 8 poort
4 - 3 - Switch 16 poort
5 - 6 - Switch 24 poort
6 - 9 - Toetsenbord
Ik heb de volgende query die werkt voor de positie maar ik krijg hem NIET werkend met ORDER BY Naam ASC
Als ik wat queries gevonden op internet probeer dan krijg ik wat enge fouten dat de query niet geldig is. Mogelijk dat dit te maken heeft met de versie van MariaDB (is 10.3.29).
De tabel heeft 2 velden:
IdHardware - INT (auto increment)
Naam - VARCHAR
Ik heb hierin de volgende waarden staan (voor dit voorbeeld):
IdHardware - Naam
1 - Router
2 - Switch 8 poort
3 - Switch 16 poort
6 - Switch 24 poort
7 - Muis
9 - Toetsenbord
Als ik dit sorteer op Naam krijg ik het volgende:
IdHardware - Naam
7 - Muis
1 - Router
2 - Switch 8 poort
3 - Switch 16 poort
6 - Switch 24 poort
9 - Toetsenbord
Nu wil ik de positie weten in de database van record "1 - Router" van de gesorteerde naam, in dit geval zal dat dus 2 moeten zijn.
Positie - IdHardware - Naam
1 - 7 - Muis
2 - 1 - Router
3 - 2 - Switch 8 poort
4 - 3 - Switch 16 poort
5 - 6 - Switch 24 poort
6 - 9 - Toetsenbord
Ik heb de volgende query die werkt voor de positie maar ik krijg hem NIET werkend met ORDER BY Naam ASC
code:
1
2
3
4
5
| SELECT (SELECT COUNT(*) FROM hardware WHERE IdHardware <= '1') AS positie, Naam FROM hardware WHERE IdHardware = '1' |
[ Voor 7% gewijzigd door WoBBeL op 20-05-2021 11:16 ]