CI4: JOIN geeft dubbele (of meer) resultaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

IT Manager

IT Manager Breda, 36-40 uur per week Je weet snel te schakelen tussen strategisch IT-beleid en de dagelijkse gang van zaken. Verder ben je een doorgewinterde professional, die helder kan verwoorden wat ervoor nodig is om onze IT-omgeving optimaal te laten functioneren. Daarnaast kun je goed leidinggeven en gaat samenwerken met ervaren en niet-ervaren gebruikers van onze IT-oplossingen je makkelijk af. Op IT-vlak weet je goed wat je wilt, maar je bent ook uitstekend in staat om buiten de kaders te denken wanneer je ergens een oplossing voor zoekt. Daarbij ben je een echte doener. Problemen die op je pad

Bekijk vacature »

Data Engineer

Data Engineer Functiebeschrijving: Wil jij een bijdrage leveren aan het veiliger maken van onze samenleving? Door optimale toepassing van data ondersteunen wij onze klanten in de veiligheidsketen met nieuwe en betere inzichten om hun taken optimaal uit te voeren. Kom je ons team versterken? Wat ga je doen? Als Data Engineer ontwerp en ontwikkel je data verwerkingsprocessen. Grote hoeveelheden data vanuit verschillende bronnen en in verschillende formaten bewerk jij tot een bruikbare dataset voor geavanceerde data analyse en visualisatie. Enerzijds ben je de architect, die nieuwe inrichtingsconcepten voorstelt, specificeert en realiseert, anderzijds ben je de ‘doener’, die dagelijkse issues snel

Bekijk vacature »

Project Management Ondersteuner (PMO) - Publieke V

Functiebeschrijving: Ben jij een betrokken PMO professional die de klant ondersteunt, ontzorgt en van aanpakken weet? Een echte meedenker die ziet wat er moet gebeuren en snel actie onderneemt? In deze uitdagende rol ben je mede verantwoordelijk voor de realisatie van complexe projecten en oplossingen binnen het veiligheidsdomein. Wat ga je doen? Als Project Management Ondersteuner (PMO) zorg je voor een goede en kwalitatieve projectadministratie. Je werkzaamheden zullen bestaan o.a. uit: Het bewaken van de richtlijnen van issuemanagement voor de projecten; Het assisteren van de projectmanagers bij het opstellen van de projectplanningen en communicatieplannen en het bewaken hiervan; Het inbedden

Bekijk vacature »

.NET developer

Bedrijfsomschrijving Als Senior .NET developer ga je werken in een DevOps team aan state-of-the-art oplossingen voor diverse opdrachtgevers. Denk hierbij aan het van scratch af aan bouwen van oplossingen, platformen, apps en andere portalen waar grote hoeveelheden data, AI en loT centraal staan. Zo is de organisatie onder andere bezig met het bouwen van een platform wat gebouwen middels tal van sensoren in kaart brengt en alles wat daarbij komt kijken. Zo kan iedereen in een opslag op een plattegrond zien welke ruimte bezet, gereserveerd of vrij is en wordt dit gekoppeld met andere diensten, bijvoorbeeld richting schoonmakers die weten

Bekijk vacature »

Ervaren .NET C# ontwikkelaar, inhouse, complex maa

Ben je als ervaren ontwikkelaar op zoek naar een analytische omgeving? Waar hoogopgeleiden en ervaren collega’s jouw kennis naar een hoger niveau kunnen tillen? Waar je met een leuk team samen aan innovatieve producten werkt? Dan zou de deze organisatie wel eens goed bij je kunnen passen. Voor een organisatie in Delft zoeken we momenteel een ervaren .NET C# ontwikkelaar. De organisatie richt zich op innovatieve en complexe maatwerk systemen met een maatschappelijke raakvlak. Hierbij moet je (afhankelijk van je niveau) mee kunnen denken met functionele en architectonische vraagstukken. De projecten kunnen uiteenlopend zijn en het is maar net wat

Bekijk vacature »

SAP BI DevOps Lead

SAP BI DevOps Lead Functiebeschrijving: Wil jij unieke SAP Business Intelligence oplossingen bedenken, ontwerpen en implementeren die een directe impact hebben op de bedrijfsvoering van onze klanten? Heb jij ervaring met de laatste en modernste tools van SAP in een agile omgeving? En wil jij de lead zijn in het opbouwen en verder professionaliseren van je eigen practice? Wat ga je doen? CGI zoekt een all-round SAP BI DevOps Lead met ervaring in het ontwerpen, bouwen en testen van ETL modellen en reporten door middel van SAP BW on HANA en verwante SAP tools. De SAP BI DevOps Lead kan

Bekijk vacature »

Developer DataPower

Bedrijfsomschrijving Je komt als DataPower developer te werken in de regio Deventer/Apeldoorn bij een van de meest complexe IT omgevingen van Nederland. De organisatie is constant in beweging en bezig met de nieuwste tools en technieken, het is een platform waar immers miljoenen (!) gebruikers van afhankelijk zijn. De organisatie werkt met grote hoeveelheden data, zij richten zich zowel op de B2B als B2C markten en zijn pionier binnen hun gebied van expertise. Je komt te werken in een team met de beste DataPower specialisten die Nederland kent. Je zal bezig zijn met het ontwerpen, bouwen en testen op het

Bekijk vacature »

Ervaren .NET C# ontwikkelaar, inhouse, complex maa

Ben je als ervaren ontwikkelaar op zoek naar een analytische omgeving? Waar hoogopgeleiden en ervaren collega’s jouw kennis naar een hoger niveau kunnen tillen? Waar je met een leuk team samen aan innovatieve producten werkt? Dan zou de deze organisatie wel eens goed bij je kunnen passen. Voor een organisatie in Delft zoeken we momenteel een ervaren .NET C# ontwikkelaar. De organisatie richt zich op innovatieve en complexe maatwerk systemen met een maatschappelijke raakvlak. Hierbij moet je (afhankelijk van je niveau) mee kunnen denken met functionele en architectonische vraagstukken. De projecten kunnen uiteenlopend zijn en het is maar net wat

Bekijk vacature »

.NET Developer PACS / Multimedia

.NET Developer PACS / Multimedia Wil jij met jouw ontwikkelskills medisch specialisten het optimale uit beeldmateriaal laten halen? Dan is dit jouw droombaan! Ter versterking van ons PACS-team in Amsterdam zoeken wij een ontwikkelaar die verantwoordelijkheid krijgt over zijn ‘eigen’ software. Jouw baan In deze functie ga je medische apparatuur (ECG\echo\OCT\MRI\Etc) integreren in ons EPD. Jij houdt je daarnaast bezig met het maken van software om de verschillende output-formaten van de apparatuur te ondersteunen en te presenteren aan medische specialisten. Tevens ben je verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van je eigen PACS-tools (Picture Archiving and Communication System).

Bekijk vacature »

SAP Test DevOps Lead

SAP Test DevOps Lead Functiebeschrijving: Wil jij unieke SAP Test oplossingen bedenken, ontwerpen en implementeren die een directe impact hebben op de bedrijfsvoering van onze klanten? Heb jij ervaring met de laatste en modernste tools van (SAP) Test Automation in een agile omgeving? En wil jij de lead zijn in het opbouwen en verder professionaliseren van je eigen practice? Wat ga je doen? CGI zoekt een all-round en senior SAP Test DevOps Lead met ruime ervaring in het opzetten van test automationframeworks binnen een SAP CI/CD omgeving. De SAP Test Lead werkt met verschillende technologieën en ontwerpt en implementeert test

Bekijk vacature »

Junior C# Developer

Bedrijfsomschrijving Onze klant is een innovatieve financiële organisatie in regio Den Haag die momenteel op zoek is naar een junior C# developer. Je zal naast je dagelijkse werkzaamheden meewerken in hele mooie projecten. In zo'n project wordt bijvoorbeeld een oude applicatie vanaf de grond af aan opnieuw gebouwd. De focus ligt hierbij op back-end development, echter zal je soms ook front-end taken op moeten pakken. De organisatie heeft een open cultuur met korte lijnen. Grote hoeveelheden data zijn kenmerkend voor het applicatie landschap, waardoor Business Intelligence een belangrijke rol in de organisatie speelt. Daarnaast zijn duurzaamheid en betrouwbaarheid termen die

Bekijk vacature »

Senior C#.Net Developer - Logistieke (zeevaart) se

Voor een hechte, informele en jonge club gespecialiseerd in Transport Management Systemen voor de vracht en havensector zijn wij op zoek naar een Senior .Net C# Developer. Een goede, sociale communicator die samenwerking en passie voor het vak key vindt. En die durft te sparren, dromen en pionieren! Deze organisatie van 150 man (waarvan 9 IT-toppers) zorgen er al 30 jaar voor dat internationale transport tot in de details kunnen worden berekend, ingepland en gemanaged, bijvoorbeeld in de Rotterdamse haven. Hierdoor worden kosten, materialen, arbeid, ontwerpen en oplevering perfect en just-in-time op elkaar afgestemd. Ze zijn marktleider én pionier in

Bekijk vacature »

Software Solution Architect - Overheid

Software Solution Architect - Overheid Functiebeschrijving: Kom jij ons team helpen bij het ontwerpen en ontwikkelen van moderne, heldere en realiseerbare architecturen voor grote, complexe omgevingen bij onze klanten binnen de Nederlandse overheid? Meer weten? Bel of Whatsapp met Aad van Kempen via 06 10040513! Wat ga je doen? In jouw rol als Software Solution Architect breng je de Nederlandse overheid via CGI naar het nieuwe digitale tijdperk met de beste ICT-infrastructuur. Hoe? Als aanspreekpunt, adviseur en hoeder voor de inrichting van het IT-landschap. Je realiseert efficiënt de IT-toepassingen, operationeel en strategisch. Waarom? Alleen het beste is goed genoeg. Daarom

Bekijk vacature »

Medior Front-end Developer

As a medior Front-End Developer at Coolblue you improve the user-friendliness of our webshop for millions of customers. How do I become a Medior Front-end Developer at Coolblue? As a Medior 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 this within the team. You are also proud of your work and welcome all feedback. "Want to become a Medior Front-end Developer at Coolblue? Else de Boer explains how to

Bekijk vacature »

Low Code Ontwikkelaar vacature van junior tot seni

Bedrijfsomschrijving Visueel ontwerpen van applicaties middels Low Code en in het specifiek OutSystems is wat je bij deze organisatie gaat doen. Dit betekent niet dat ze geen ruimte hebben voor specialisten binnen bijvoorbeeld Mendix want deze organisatie ademt Low Code. Hier hebben ze ruimte en bovenal ook uitdaging voor ervaren Low Code Ontwikkelaars, maar daarnaast leiden ze ook starters op. Je komt hier te werken met collega’s die echt weten wat ze doen. Dit geeft je de mogelijkheid om ook lekker te sparren met de andere OutSystems Consultants die hier werkzaam zijn. Daarnaast leggen ze alles in gewone mensentaal uit,

Bekijk vacature »
Bernhard Flokstra

Bernhard Flokstra

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/01/2021 18:52:30
 
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.
 
Bernhard Flokstra

Bernhard Flokstra

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.