CI4: JOIN geeft dubbele (of meer) resultaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior iOS Developer

Als iOS Developer zorg jij voor een ultieme klantervaring voor het zoeken en kopen van producten bij Coolblue via de app. Hoe word ik iOS Developer bij Coolblue? Je bent succesvol in het schrijven van Swift code en werkt nauw samen met je collega’s, bijvoorbeeld in de vorm van pair programming, om de kwaliteit te waarborgen. Daarbij denk je na over technische keuzes zoals architectuur, tools en processen. Verder houd je de prestaties van de app in de gaten en analyseer je met het team hoe je dit kunt verbeteren. Het werken volgens Scrum methode is jouw niet onbekend en

Bekijk vacature »

Senior fullstack .NET developer

Wil jij samen met gemotiveerde en slimme collega’s bouwen aan ons geavanceerde landschap in Azure? En vind je het ook nog eens leuk om jouw kennis te delen met junior- en medior devs? Dan heb je wellicht interesse in de positie van: Senior fullstack .NET developer voor ons kantoor in Alkmaar Over de positie: Bij SnelStart werken we in een AGILE-structuur om de productie meer focus en impact te geven. Met je collega’s kom je tot de beste resultaten door onderlinge discussie, goede refinement sessies, reviews en écht teamwork. Je hebt de vrijheid om de dingen te doen zoals jij

Bekijk vacature »

Senior Java Developer Onderzoeksinstituut Architec

Functieomschrijving Wil jij als Senior Java Developer dagelijks meedenken aan diverse architectuur oplossingen? Ga jij graag met je collega’s op zoek naar de beste oplossing? Lees dan snel verder! Doorontwikkelen van diverse applicaties met behulp van o.a. Java 8; Huidige en toekomstige projecten in goede banen leiden; Meedenken over architectuur en innovatiemogelijkheden; Zelfstandig kunnen werken. Functie-eisen Hbo werk- en denkniveau; Minimaal drie jaar relevante werkervaring; Aantoonbare ervaring met Java 8 en Webservices; Kennis van CI/CD en Elasticsearch is een pré; Je bent zelfstandig en kritisch op je eigen werk en die van je collega’s. Bedrijfsomschrijving Als Senior Java Developer kom

Bekijk vacature »

Senior Mobile Developer vacature

Senior Mobile Developer Currently we are specific looking for professionals who speak fluently Dutch on C1 level. Op bijna elke mobiele telefoon in Nederland is wel een app te vinden die door Sogeti is ontwikkeld of waar Sogeti aan mee heeft gewerkt. Wil jij meehelpen met het ontwikkelen van mobiele applicaties voor de top van het Nederlandse bedrijfsleven? Als Senior Mobile Developer ben jij verantwoordelijk voor het implementeren en testen van nieuwe features. Je bent medeverantwoordelijk voor de codebase en moet deze code dus ook goed onderhouden. Doordat je thuis bent in het mobiele landschap kun je gemakkelijk sparren met

Bekijk vacature »

Junior .Net Developer voor geautomatiseerde emailm

Onze klant is een Email Marketing Automation ontwikkelaar voor vele grote klanten in Nederland en België. Met hun marketingsoftware weten zij dagelijks miljoenen mensen te bereiken voor hun klanten. Als Junior .Net Developer van het jonge en informele Innovatie Team breng jij het platform naar een hoger niveau. Je bent hierbij als junior vanaf dag 1 volledig betrokken bij het team. Je bent betrokken de volledige software development life cycle en gaat dan ook mee naar de grote klanten. Terwijl je wordt ingewerkt en dagelijks spart met je 15 gezellige collega’s, werk je aan zowel de front-end als back-end van

Bekijk vacature »

.NET C# web developer met focus op gebruiksvriende

Ben je op zoek naar een baan binnen een klein softwarebedrijf? Een bedrijf met een informele, persoonlijke en familiaire sfeer? Waar je je als developer zowel richt op de back- als frontend? Wellicht dat deze vacature dan iets voor jou is. Voor een softwarebedrijf, gevestigd in het centrum van Rotterdam, zijn we momenteel op zoek naar .NET C# web developer. Dit mag iemand zijn die net van school komt, maar ook iemand die al behoorlijk wat ervaring heeft. Het bedrijf bestaat inmiddels ruim 10 jaar en en door de aanhoudende groei zijn ze opzoek naar versterking van 1 a 2

Bekijk vacature »

.NET Developer Zorg-ICT

Complexe software ontwikkelen: dat is jouw ding! Voor onze vestiging in Hoogeveen zoeken wij fanatieke junior en senior .NET Developers die met de laatste Microsoft-tools en -technieken willen werken. Jij bent gemotiveerd en draagt graag verantwoordelijkheid voor je 'eigen' software, die wordt ingezet in ziekenhuizen door heel Nederland. Jouw baan Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in een klein team. ChipSoft maakt gebruik van een zelf ontwikkeld multi tier framework. Tijdens een

Bekijk vacature »

lead developer ServiceNow

Locatie DIEMEN Functieomschrijving Bij de grootste HR service organisatie ter wereld sta je met 5.500 medewerkers en 80.000 flexkrachten in Nederland voor een grote uitdaging. Bij zoveel informatie is het belangrijk dat deze op de juiste plek terecht komt en onze werkprocessen en de IT op elkaar aansluiten. Daarom zijn wij op zoek naar iemand die business wensen kan omzetten naar technische oplossingen. Je maakt niet alles technische analyses, maar denkt ook mee over de mogelijke impact op andere processen en systemen, en bouwt uiteraard de oplossing zelf. Als developer ServiceNow (technical Lead Work Processes) bouw jij de oplossingen die

Bekijk vacature »

Slimme Junior/Medior .NET Developer gezocht!

Functieomschrijving Je komt te werken in een leuk en gezellig team van vijf mensen die op een professionele manier met elkaar programmeren. Het werk is uitdagend genoeg en af en toe wordt er veel van je gevraagd, maar je hebt altijd leuke sparringpartners waar je mee kunt discussiëren. Het team vraagt zelf om een extra developer omdat ze merken dat door groei van het klantenbestand er teveel werkdruk ontstaat. Bovendien is het nu de juiste tijd om een programmeur aan te trekken aangezien ze verhuisd zijn naar een groter kantoor. Als programmeur werk je hier met het .NET framework en

Bekijk vacature »

Medior PHP Developer

As a PHP Developer at Coolblue, you ensure that our webshops are bizarre fast and super tight. How do I become a PHP Developer at Coolblue? As a Medior PHP Developer you work together with other development teams to make our webshop work as optimally as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little C # or Javascript. Want to become an PHP Developer at Coolblue? Else will explain how to do that. You enjoy doing this Writing PHP code, but can also find your way in C

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

IAM developer

Locatie DIEMEN Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen

Bekijk vacature »

C# Developer /SaaS applicaties/MVC/ SQL/ 4.000 eur

Functieomschrijving Ben jij een .NET (C#) Developer wil werken in een IT-minded organisatie? Heb je kennis van MVC en SQL? Wil jij werken aan in-house ontwikkelde applicaties? Houd jij de nieuwste technieken in de gaten om het ontwikkelproces beter te laten verlopen? Lees dan snel verder! Nieuwbouw, onderhoud en bugfixing van de applicaties; Het produceren van code met een hoge kwaliteit; Hulp bieden aan jouw collega's met verschillende (complexe) technische kwesties; Kwaliteitsmonitoring van het gehele project, incl. de opgeleverde wijzigingen; Het waarnemen van verbetermogelijkheden en deze op de planning zetten. Functie-eisen Uitgebreide werkervaring met C#; Kennis van MVC en SQL;

Bekijk vacature »

Noordoost Java Developer vacature

Java Developer Noordoost Word onderdeel van een topteam met ervaren Java Developers. Loop voorop in de ontwikkelingen en help mee innoveren. Focus op Java Wij bouwen State of the Art applicaties met de nieuwste Java technologie en frameworks. Dit doen we door ons te richten op de open source-oplossingen binnen de wereld van Java, alle nieuwe ontwikkelingen te volgen en onze kennis te delen binnen onze eigen Java Community. Dit betekent bijvoorbeeld dat we aanwezig zijn op veel conferenties; Oracle Code One, Devoxx en JFall. We organiseren ook onze eigen collegiale sessies en hackatons waar we kennis en plezier combineren.

Bekijk vacature »

Medior Software Developer with C++ and C#

Medior Software Developer with C++ and C# Intro For our client in Eindhoven are we looking for seven software engineers with various skills. Is your interest triggered by the development of application / automation software for especially area’s like data acquisition and processing? Can you be available right away? Then this might be the opportunity for you! Function Information For our client we are looking for three different roles. One of the roles is for a C# Software engineer with docker. The second role is for a Application software engineer with C++. The final role is a software designer with

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

21/09/2020 18:54:45
 
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.