Records uit tabel ordenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe stap? Voor een softwarebedrijf in regio Oosterhout zijn wij op zoek naar een back-end developer met kennis of ervaring met C# en SQL. Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Full Stack PHP Developer

Functieomschrijving Ervaren PHP Developer gezocht! Wij zijn op zoek naar een ervaren PHP Developer die het IT team van een organisatie in de regio Ermelo gaat versterken. Voor deze functie zijn we op zoek naar een enthousiaste en breed georiënteerde IT-er die deze innovatieve organisatie nog een stap verder gaat brengen. Wij zijn op zoek naar iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je bent verantwoordelijk voor het samenwerken met een externe partij het is hierbij jouw taak om deze partij uit te dagen op het geleverde werk. Het schrijven van concepten aan de AI

Bekijk vacature »

Ervaren Full stack developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house functie bij een bedrijf met enorme groeipotentie? Ben jij op zoek naar een nieuwe uitdaging vol afwisseling en gezelligheid? Dan ben je bij dit bedrijf aan het juiste adres! Wij zijn in omgeving Breda op zoek naar een ervaren full stack developer. Je gaat werken voor een zeer gewilde werkgever met goede arbeidsvoorwaarden. Je krijgt een plekje in het jonge IT team, work hard, play hard is hier duidelijk het motto! Jouw werkzaamheden zien er als volgt uit: Jij bent verantwoordelijk voor het ontwerpen en bouwen van webapplicaties. Je bent

Bekijk vacature »

Front-end (Angular) developer

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een Front-end (Angular) developer. Het it-team bestaat momenteel uit de IT Manager, 2 back-end developers, 1 fullstack developer, 1 designer en een DevOps engineer. Ze zijn dus op zoek naar professionals die autonoom en gedisciplineerd aan de slag gaan, en bij aanvang als enige developer met hun Front-end applicaties aan de slag gaat. Wel hebben ze de ambitie om hier snel een 2e developer bij te vinden die jij dan ook zal kunnen aansturen/begeleiden. Je zult aan de slag gaan met het doorontwikkelen van hun bestaande UI

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Java/Kotlin Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Software Developer

Dit ga je doen Ontwikkelen aan de software dat beschikbaar is op de substations; Ontwikkelen in C++, C, Python en JavaScript. Daarnaast op een Embedded Linux omgeving, opgebouwd met containers en DevOps; Meewerken aan cyber security (OWASP); Uitvoeren/bouwen van geautomatiseerde testen in samenwerking met de Quality Specialist; Vertalen van wensen van de klanten/business naar werkbare/duurzame oplossingen. Hier ga je werken Als Software Ontwikkelaar kom je te werken bij een organisatie gericht op de (internationale) energiemarkt, waar wordt gewerkt voor het verwerven en verwerken van realtime, high quality data. Er wordt gewerkt vanuit het hart van de substations en direct voor

Bekijk vacature »

Front-end Developer

Do you want to work with the latest technologies on the development of new systems and applications? Create elegant interfaces using VueJS for thousands of users? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Thanks to your efforts, our services are always presented in style. As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Writing elegant, testable components without side-effects to provide functionality to the users Website development, adding

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

C# .NET Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf. Lees dan snel verder! Voor deze functie zoeken wij een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Daarnaast begeleid je complexe projecten, wij zoeken iemand die altijd kansen ziet en waarbij het glas altijd half vol is. Voor deze functie zoeken wij een Developer met ervaring op het gebied van .NET die deze organisatie gaat versterken. Binnen de organisatie ga jij je vooral bezighouden met het verbeteren van

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »
Liefhebber Laravel

Liefhebber Laravel

30/08/2017 11:35:58
Quote Anchor link
Hoi,

Ik heb volgende tabel in mijn databank:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
id parid value
1  0     value 1
2  0     value 2
3  1     sub of 1
4  1     sub of 1
5  2     sub of 2
6  2     sub of 2
7  5     sub of 5


parid is de parent_id en verwijst naar het id in dezelfde tabel
De bedoeling is dat deze herordend kan worden naar deze volgorde:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
1  0     value 1
3  1     sub of 1
4  1     sub of 1
2  0     value 2
5  2     sub of 2
7  5     sub of 5
6  2     sub of 2


Zoals je ziet moeten de parent id's onder de gekoppelde id's komen. (record 1 heeft 2 sub id's, namelijk records 3 en 4, dus die moeten onder die record 1 komen)

Kan ik deze ordening toegepast krijgen in MySQL? Of is het beter te doen in PHP?

Ik werk in Laravel, dus mijn databank data kan als collection behandeld worden.

Ter info, de diepte van de subs kan eindeloos zijn.
 
PHP hulp

PHP hulp

11/01/2025 18:37:54
 
Ivo P

Ivo P

30/08/2017 12:04:24
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT id, parid, value
FROM tabel
ORDER BY parid ASC, id ASC


Toevoeging op 30/08/2017 12:07:04:

ik denk trouwens dat parid nooit 0 zou mogen zijn, aangezien er geen record is met id=0.
Daar zou NULL op zijn plaats zijn.


Daar gaat mijn antwoord ook de mist in: die records met 0 in parid komen bovenaan
 
Liefhebber Laravel

Liefhebber Laravel

30/08/2017 12:46:49
Quote Anchor link
@Ivo P: Betreffende de parid 0 heb je helemaal gelijk. Dit zou inderdaad NULL moeten zijn. Maar als ik dit aanpas, krijg ik nog steeds dezelfde foute ordening:

originele data:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
id parid value
1  NULL  value 1
2  NULL  value 2
3  1     sub of 1
4  1     sub of 1
5  2     sub of 2
6  2     sub of 2
7  5     sub of 5


Resultaat na de query is hetzelfde...

Toevoeging op 31/08/2017 08:55:50:

Iemand een idee alsjeblieft? Misschien bestaat de mogelijkheid om de resultaten als array te bewerken in PHP om zo het gewenste resultaat te bereiken?
 
Ward van der Put
Moderator

Ward van der Put

31/08/2017 09:29:40
Quote Anchor link
Nu parid NULL mag zijn, kun je sorteren met IFNULL():

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
  SELECT *
    FROM tabel
ORDER BY IFNULL(parid, id)


Als parid niet NULL is, dan wordt er gesorteerd op de parid; als parid wél NULL is, dan wordt er gesorteerd op de id.
 
Liefhebber Laravel

Liefhebber Laravel

31/08/2017 10:56:24
Quote Anchor link
Dank u Ward, Maar dit werkt enkel voor de eerste diepte, namelijk alle subs onder de hoofd categorie. Maar extra subs worden niet correct geordend. Bestaat daar ook een oplossing voor?
 
Ben van Velzen

Ben van Velzen

31/08/2017 11:25:13
Quote Anchor link
Dat is een recursieve functie. Eventueel op te lossen met een stored procedure of stored function, of een functie in PHP.
 
Ivo P

Ivo P

31/08/2017 11:33:37
Quote Anchor link
hoe werkt dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT *
FROM tabel
ORDER BY COALESCE(parid, id) ASC


COALESCE pakt de eerste waarde uit de lijst (parid, id) die niet gelijk is aan null.

Voor de hoofditems pakt hij dus ID om op te sorteren.
 
Liefhebber Laravel

Liefhebber Laravel

31/08/2017 11:56:31
Quote Anchor link
Maar met de COALESCE functie komt mijn record 7 nog steeds niet onder record 5 waarvan het 'child' is
 
Ivo P

Ivo P

31/08/2017 12:57:30
Quote Anchor link
ah het zijn meerdere levels.
had ik overheen gelezen
 
Jan Koehoorn

Jan Koehoorn

31/08/2017 21:15:13
Quote Anchor link
Voorbeeldje met een "harde" array:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$tree
= [
    [
'id' => 1, 'parid' => 0, 'value' => 'value 1'],
    [
'id' => 2, 'parid' => 0, 'value' => 'value 2'],
    [
'id' => 3, 'parid' => 1, 'value' => 'sub of 1'],
    [
'id' => 4, 'parid' => 1, 'value' => 'sub of 1'],
    [
'id' => 5, 'parid' => 2, 'value' => 'sub of 2'],
    [
'id' => 6, 'parid' => 2, 'value' => 'sub of 2'],
    [
'id' => 7, 'parid' => 5, 'value' => 'sub of 5'],
    [
'id' => 8, 'parid' => 5, 'value' => 'sub of 5'],
    [
'id' => 9, 'parid' => 5, 'value' => 'sub of 5'],
];

function
printTree($parid = 0, $tree)
{

    foreach ($tree as $node) {
        if ($node['parid'] === $parid) {
            vprintf('node id: %d, parent id: %d, $value: %s' . PHP_EOL, $node);
            printTree($node['id'], $tree);
        }
    }


    return;
}


printTree(0, $tree);
?>
Gewijzigd op 31/08/2017 21:16:17 door Jan Koehoorn
 
Liefhebber Laravel

Liefhebber Laravel

01/09/2017 14:53:27
Quote Anchor link
Hi Jan, bedankt voor je reactie! Ik heb een oplossing gevonden!

Ik haal alle records uit de tabel (SELECT * FROM tabel ORDER BY id), vervolgens haal ik die array door jouw functie en bouw ik zo een nieuwe, correct geordende array.

Ik werk in Laravel, en laravel gebruikt collecties, dus moest ik de functie even aanpassen: hier mijn oplossing:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Alle rijen binnenhalen
$records = App\Record::->all();

$ids = array();
$teller = 0;
function setorder($parid = 0, $tree){
    global $ids;
    global $teller;
    foreach ($tree as $node) {
        if ($node->main_group_id === $parid) {
            // nieuwe array $ids aanvullen met gegevens
            $ids[$teller]['id'] = $node->id;
            $ids[$teller]['level'] = $node->level;
            $ids[$teller]['final'] = $node->final;
            $teller++;
            setorder($node->id, $tree);
        }
    }
    return $ids;
}
$d = setorder(0, $specs);
// array omzetten naar collectie
$d = collect($d);
dd($d);
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.