Records uit tabel ordenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Senior Front-end developer

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Software Developer C# .NET gezocht voor een dynamische organisatie! Ben jij net afgestudeerd of toe aan een volgende stap in je maatschappelijke carrière? Lees dan snel verder! Wij zijn op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die een organisatie in de regio Houten wil versterken. Je werkt in deze functie aan verschillende projecten en gaat vaak op bezoek bij klanten. In deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid verwachten. Bedrijfsprofiel Waar kom je te werken? Je komt te werken bij een organisatie dat gespecialiseerd is in

Bekijk vacature »

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

Senior Front-end Developer

Dit ga je doen Met behulp van diverse programmeertalen ontwikkelen van Front-end software; Het begeleiden van het front-end team; Het oplossen van incidenten; Het bijhouden van een backlog; Je hebt een actieve bijdrage in de wekelijkse overleggen met de omliggende teams; Je houdt trends bij en adviseert het management hierover waar nodig; Helder communiceren met de stakeholders om hen zo mee te nemen in projecten en laten inzien wat de duur en toegevoegde waarde van bepaalde projecten is. Hier ga je werken Deze organisatie heeft circa 40 miljoen bezoekers per maand en heeft innovatie hoog in het vaandel staan. Het

Bekijk vacature »

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Front-End React Developer

As a Front-End React Developer you improve the user-experience of our web applications for your colleagues in Coolblue. How do I become a Front-End React Developer at Coolblue? As a Front-End React Developer you are responsible for developing user interface components and implementing them using React.js concepts and workflows. You work with the UX Designer and get energy from coming up with creative solutions and present these within the team. During the day you gather and welcome feedback on your technical and soft skills. Would you like to become a Front-End React Developer at Coolblue? Read below if the job

Bekijk vacature »

Infrastructure Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12945 Introductie Our client is one of the most innovative companies within the Netherlands. Currently we are looking for an Infrastructure Platform Engineer. Within this role you will be developing the infrastructure. Functieomschrijving Within this role you are responsible in the development of our distributed data and compute platform infrastructure. You will design, develop and implement new features and fixes. Next to this you will integrate and configurate other packages that supports the development of tuning applications within the organisation. You will support customer sites remotely. Design and implement the

Bekijk vacature »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

T-SQL Database developer

Functie omschrijving Ben jij een ETL database specialist? Houd jij ervan om te puzzelen met Databases, Query's & Stored procedures? Zoek jij uitdaging, vrijheid en verantwoordelijkheid? Zoek dan niet verder! Wij zijn per direct op zoek naar medior en senior database developers. Je gaat werken voor een relatief klein softwarebedrijf in omgeving Tilburg. Samen met 12 collega's (allemaal techneuten), ga jij je bezig houden met het bouwen en/of onderhouden van database software. Deze software wordt internationaal ingezet voor het automatiseren van logistieke processen. Jouw werkzaamheden gaan er als volgt uit zien: Je bent in een klein team met developers, verantwoordelijk

Bekijk vacature »

Front-End Developer

As a Front-End Developer at Coolblue you improve the user-friendliness of our webshop for millions of customers. How do I become a Front-End Developer at Coolblue? As a Front-End Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present these within the team. You also take pride in your work and welcome any feedback. Would you like to become a Front-End Developer at Coolblue? Read below if the job suits you. You

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

23/04/2024 17:26:39
 
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.