CI4: JOIN geeft dubbele (of meer) resultaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Database Developer

Functieomschrijving Wat ga je doen? Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te voeren, maar het is ook prettig als je in de omgeving van Tilburg woont om naar het kantoor te kunnen komen. Vind jij het leuk om jouw creatieve vaardigheden te benutten om complexe systemen te ontwikkelen? Lees dan snel verder! Bedrijfsprofiel Voor wie

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar ga jij aan de slag bij een van onze klanten actief in de High Tech Industrie. Onze klanten zijn voornamelijk gelokaliseerd in de omgeving van Eindhoven. Wij zijn erg selectief als het gaat om de projecten die wij accepteren en richten ons dan ook alleen op innovatieve en complexe projecten. Omdat onze klanten voornamelijk gespecialiseerd zijn in de machinebouw, werk jij ook vaak dicht tegen de machines aan. Ons team bestaat momenteel uit Embedded engineers, IOT developers en Cloud engineers. Wij werken voornamelijk aan Microsoft projecten waar er gebruik wordt gemaakt van WPF, UWP, .NET Core

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

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 »

Front-end developer (Medior/Senior)

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Outsystems Developer Medior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als ervaren Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van de

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

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 »

.NET Developer

Functie omschrijving Ervaren .NET Developer gezocht! Wij zoeken een ervaren .NET developer die aan de slag gaat voor een softwarebedrijf in de regio Rhenen. In deze rol ben jij zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Daarnaast houdt jij je bezig met de nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en product specialisten om mooie producten te creëren. Bedrijfsprofiel Waar kom je te werken? Je komt te werken voor snelgroeiende softwareleverancier en allround dienstverlener. Klanten van deze

Bekijk vacature »

21/06/2020 12:27:32
Quote Anchor link
Ik hoop dat we hier een CodeIgniter 4 guru hebben. Ik ben redelijk nieuw in CI4, maar heb al wel een 'paar' jaartjes ervaring met PHP (al heb ik sinds php 5.4 niet zo heel veel gedaan, ivm andere prioriteiten).

Ik heb twee mysql tabellen (eenheden en statussen). De structuur voor deze tabellen is:
Eenheden:

id (int, PRIMARY, AI)
roepnummer (vchar(6)
locatie (varchar(255))
status (int)
leden (varchar(255)
telefoon (varchar(255))

Voorbeeld data:
id, roepnummer, locatie, status, leden, telefoon
1, '52-201', 'Centrale post', 1, 'Jan en henk', '0612345678'
2, '52-24', 'Start/Finish', 3, 'Jolanda', '0698765432'
3, '1597', 'Ambulance parkeer', 2, '0645678923'

Statussen:

id (int, PRIMARY, AI)
status (varchar(255))
bgcolor (varchar(7))
txtcolor (varchar(7))

Voorbeeld data:
id, status, bgcolor, txtcolor
1, 'Beschikbaar', '#FFFFFF', '#000000'
2, 'Behandelen', '#1d27ad', '#FFFFFF'
3, 'Pauze', '#FFFFFF', '#959c97'

Ik wil de volgende query uitvoeren:

SELECT
e.id, e.roepnummer, e.locatie, e.telefoon, e.leden, statussen.status, statussen.bgcolor as bgcolor, statussen.txtcolor as txtcolor
FROM
`eenheden` as e
JOIN
statussen ON e.status=statussen.id

Ik gebruik de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$db
= \Config\Database::connect();
            $builder = $db->table('eenheden');
            $builder->select('e.id, e.roepnummer, e.locatie, e.telefoon, e.leden, statussen.status as status, statussen.bgcolor as bgcolor, statussen.txtcolor as txtcolor');
            $builder->from('eenheden as e');
            $builder->join('statussen', 'e.status = statussen.id');
            
            return $builder->get()->getResultArray();
?>


Nu komt het probleem waar ik mee zit. Ik krijg veel meer resultaten dan ik zou verwachten. Wanneer tabel Eenheden slechts 1 rij bevat, krijg ik 1 resultaat. Wanneer Eenheden twee rijen heeft, krijg ik 4 resultaten (2 per rij in eenheden, met identieke data). Met 3 rijen in Eenheden krijg ik 9 resultaten (3 per rij), enzovoort.
Wanneer ik de bovenstaande query handmatig uitvoer, werkt deze zoals ik zou verwachten.

Mis ik iets> Voegt CI4 iets toe aan mijn query dat hier voor zorgt? Of werkt mijn code snippet niet zoals ik verwachten zou en moet ik nog iets toevoegen? Ik staar mij hier al een week blind op, heb uren op Google gezocht, de CI4 documentatie meermaals doorgelezen. Ik kan het niet vinden.
Gewijzigd op 21/06/2020 13:21:39 door - Ariën -
 
PHP hulp

PHP hulp

27/05/2026 11:43:39
 
Rob Doemaarwat

Rob Doemaarwat

21/06/2020 13:35:53
Quote Anchor link
Geen verstand van CI, dus een gokje: zowel met ->table() als ->from() geef je nu de "eenheden" tabel op. Bakt de builder hier dan geen join van (en join je dus alle eenheden aan alle eenheden = verklaring voor je "kwadraat" aantal resultaten)?

... enige tijd later ...

Ja: https://codeigniter.com/user_guide/database/query_builder.html#selecting-data

Note

As shown earlier, the FROM portion of your query can is specified in the $db->table() function. Additional calls to from() will add more tables to the FROM portion of your query.


Uiteindelijk bak je met bovenstaande dus iets van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
select e.id, e.roepnummer, e.locatie, e.telefoon, e.leden, statussen.status as status,
  statussen.bgcolor as bgcolor, statussen.txtcolor as txtcolor
from eenheden,eenheden as e
  join statussen on e.status = statussen.id


Omdat tabel eenheden nu dubbel in je from staat (en de 2e netjes met een alias - anders kreeg je een error) en verder geen "joinende voorwaarde", join je nu elk record van eenheden aan elk ander record van eenheden.
Gewijzigd op 21/06/2020 13:45:17 door Rob Doemaarwat
 
Thomas van den Heuvel

Thomas van den Heuvel

21/06/2020 13:45:23
Quote Anchor link
Bernhard Flokstra op 21/06/2020 12:27:32:
Wanneer ik de bovenstaande query handmatig uitvoer, werkt deze zoals ik zou verwachten

Dit zou dus (inderdaad) suggereren dat CI hier blijkbaar iets anders van maakt. Het is dus (zeer) interessant om te zien of die stelling klopt. En als dat het geval is, dan zul je dus iets moeten veranderen in de aanpak. Maar eerst moet je weten wat voor concrete query CI hier van maakt.

Na het bouwen van de query kun je met behulp van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= $builder->getCompiledSelect();
?>

De gegenereerde SQL ($sql) inspecteren.
 

21/06/2020 14:07:56
Quote Anchor link
Zucht...

Rob, bedankt!!! Dit was inderstaat het probleem. Ik heb nu from verwijderd en van ->table dit gemaakt:
$builder = $db->table('eenheden as e');

Dit doet exact wat ik zocht. Soms staar je jezelf zo blind op een probleem dat je gewoon recht over de oplossing heen leest.
 



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.