ingewikkelde JOIN query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer

Functie Wat ga je doen als Java Developer? Samen met jou gaan we één project vinden die het best jou past, leerzaam zijn en bedragen aan jouw wensen en ontwikkelingen. In een jaar tijd word je klaar gestoomd tot een zelfstandige Java Ontwikkelaar, doormiddel van een masterclasses, intensieve en interactieve trainingen van top coaches, die klaar staan om jouw kennis te vergroten en dit ook te realiseren in praktijk. Samen met jouw coach ga je een persoonlijke leerplan opzetten om jou doelen te behalen. Start nu jouw carrière. Eisen Wat wordt er van jou verwacht? • Een afgeronde HBO Informatica

Bekijk vacature »

Node.js developer

Functie Als ervaren Node.js developer kom jij terecht in ons microservice team, een team wat bestaat uit ervaren developers. Het afgelopen jaar heeft dit team zich gericht op het ombouwen van onze huidige applicatie, een monoliet systeem wat ontwikkeld is in PHP & Symfony. Deze nieuwe architectuur is een Serverless microservice in AWS wat gebruikt maakt van alle moderne methodieken zoals Event Sourcing, Domain Driven design en CQRS. Dit wordt met Node.js in de backend gedaan en Vue.js in de Frontend. Deze transitie is nu voor zo een 30% klaar en wordt ook direct toegepast op ons andere platform. Het

Bekijk vacature »

Backend Java Developer

Functieomschrijving Are you an experienced backend developer who wants to build something that really makes an impact? How does building an entirely new microservices environment to handle contracts, placements, salary payments and invoicing for the world’s largest HR service provider sound? What will you be doing? As backend developer in a scrum team you of course develop user stories, review code and test. Within our teams the role of senior developer also includes: designing and developing scalable and maintainable solutions for all to use; empowering your peers to take ownership, responsibility and accountability of everything we build; identifying and solving

Bekijk vacature »

Lead back-end developer met Product Owner skills g

Functie Momenteel zijn ze op zoek naar een ervaren developer die binnen het team de lead kan nemen, en vanuit die ervaring ook de rol als Product Owner vervult voor een team van externe developers. Bijvoorbeeld door duidelijke stories te schrijven en hun werk naderhand te controleren. Hiernaast zul je ook zeker zelf code blijven schrijven. Je ontwikkelt nieuwe uitbreiding op de back-end (geschreven in Java en PHP), zoals bijvoorbeeld integraties met derde partijen (Alexa, Google Home). Ook ben je bezig met de ontwikkeling van nieuwe functionaliteiten. Eisen • Je hebt een groot analytisch vermogen • Je hebt minimaal 5

Bekijk vacature »

Product Developer (Engineer)

This high tech production company, based in Helmond in the south of the Netherlands, they are part of an international Group. The company specializes in the development, engineering and supply of quartz, graphite and advanced technical ceramic products. their products are used within the semiconductor-, automotive-, solar- and opto-eclectronics industry. Core values this company and their employees embrace are Innovation, collaboration and customer focus. Within the team of Product Engineering there is now an opening. This team drives business development by setting specifications on products to guarantee the delivery on aspects as quality, operational capabilities, timing, volume and cost price.

Bekijk vacature »

Ontwikkelaar / Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

Backend Developer API's / HBO / 3.300 - 4.800

Samengevat: Deze werkgever heeft de ambitie om dé ontwikkelaar te worden voor complexe maatwerk apps in Nederland. Ben jij geschikt als backend developer? Heb je ervaring met AWS? Vaste baan: Backend Developer API's HBO WO 3.300 - 4.800 Backend Developer Op dit moment zijn zij een scale-up. Zij zijn een sterke speler binnen app development en zijn hard op weg om marktleider te worden. Zij bieden verschillende opleidings- en ontwikkelingsmogelijkheden binnen ons bedrijf, waardoor je de kans krijgt om door te groeien. Daarnaast hebben we een laagdrempelige en gezellige bedrijfscultuur.Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt

Bekijk vacature »

Full-Stack Developer

As a Full-Stack Developer in my team you work on complete software stacks for medical support, connected cars and/or High-Tech mechatronic systems. You are experienced in web development with prominent frameworks (Angular, REACT or others) that connect you effectively to cloud systems including PaaS and SaaS (AWS or Azure). You can extend cloud systems with scalable features with the necessary security within a microservice architecture. In addition, you are responsible for the quality and sustainability of your contribution and you work together with your team on the end product. What are you going to do? You build both the front-end

Bekijk vacature »

C# developer

Functie Wij zijn op zoek naar een C# developer die het fijn vindt om op pad te zijn. Een C# developer die niet de hele dag achter zijn computer wilt zitten. Jij gaat in deze functie een dynamische rol spelen voor jouw team! De klant besteld branche specifieke apparatuur bij ons. Vervolgens kom jij deze apparatuur op locatie installeren met een collega. Het kan wel eens voorkomen dat de klant zich bevindt in het buitenland. Wij zorgen er in ieder geval voor dat alles op en top geregeld is zoals hotelverblijf, vervoer en een onkostenvergoeding zodat jij niet verhinderd wordt.

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 »

Lead back-end developer

Functie They are currently looking for an experienced developer who can take the lead within the team, and from that experience also fulfil the role of Product Owner for a team of external developers. For example by writing clear stories and checking their work afterwards. In addition, you will certainly continue to write your own code. You develop new back-end extensions (written in Java and PHP), such as integrations with third parties (Alexa, Google Home). You will also be working on the development of new functionalities. Eisen • You have great analytical skills • You have at least 5 years

Bekijk vacature »

Programmeur

Ben jij technisch ingesteld en help jij graag met de voorbereiding van installaties? Ben jij gemotiveerd en neem je graag verantwoordelijkheid? Dan is de functie van Programmeur misschien wel wat voor jou! Nu al enthousiast? Lees dan snel verder! Wat bieden wij jou Goede werksfeer Flexibiliteit in de werktijden Uitzicht op een vast contract Programmeur Automatisering Nodige opleidingen en ondersteuning Marktconform salaris Wie ben jij Je bent positief ingesteld en heel erg gemotiveerd. Je neemt graag de verantwoordelijkheid en zorgt altijd dat je werk op tijd af is. Kunnen werken in teamverband is voor jou geen probleem, en zelfstandig functioneren

Bekijk vacature »

Medior Java developer (backend)

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 »

E-commerce Developer

Wil jij als Solution Architect Salesforce meebouwen aan onze E-Commerce oplossingen? Wil jij meer doen dan alleen configureren? We bouwen in onze digitale fabriek aan een platform om VDL bedrijven te digitaliseren. E-commerce speelt daarin een belangrijke rol. Agile en scrum zijn voor jou gesneden koek, want je wil net als je collega’s van het VDL Digital team snel vooruit om resultaat te boeken. In een multidisciplinair team ontwikkel je mee aan het E-Commerce platform voor de ruim 100 bedrijven binnen VDL Groep. Een mooie uitdaging! Jij wordt gelukkig van E-Commerce: Je bent als Solution Architect Salesforce onderdeel van het

Bekijk vacature »

Angular Frontend developer

Bedrijfsomschrijving Yacht is a Dutch recruitment, and consultancy agency. The company was founded on May 19, 2000, as an operating company of Randstad Holding with a focus on highly educated and trained professionals. In addition to the Netherlands, Randstad Holding is active in more than 60 countries worldwide. Yacht is the organization of and for professionals. We connect professionals and organizations that want to make a difference. Our goal is an optimal result: To provide challenging assignments to our professionals. Interested? Then we would like to get to know you better! Functieomschrijving Are you an Angular Frontend developer who is

Bekijk vacature »
Lasse

Lasse

08/03/2007 17:15:00
Quote Anchor link
Hallo,

Ik zit met het volgende probleem:

Ik heb 3 tabellen:

------fietsverkoper--------
id
name
...
...

------fietssoort-------
id
name
...
...

------interactie------
id
soortid
verkoperid



Nu wil ik door een soort fiets in te vullen alle fabrikanten krijgen die die soort verkopen. Dat wil nog prima:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
    fietsverkoper.name
FROM
    fietsverkoper
INNER JOIN
        interactie
    ON
        fietsverkoper.id = interactie.verkoperid
WHERE
    interactie.soortid = 1


Maar nu moet het zo dat mensen meerdere fietssoorten kunnen selecteren, en dat alleen de verkopers die alle fietssoorten die zijn geselecteerd uit de query komen.

Ik hoop dat het zo duidelijk is.
Alvast bedankt:D
Gewijzigd op 01/01/1970 01:00:00 door Lasse
 
PHP hulp

PHP hulp

26/09/2022 17:14:44
 
Robert Deiman

Robert Deiman

08/03/2007 17:20:00
Quote Anchor link
Dan moet je gewoon de WHERE uitbreiden, heeft verder weinig met de join temaken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE interactie.soortid = 1 AND interactie.soortid=2
enz.. Dat zou moeten werken voor zover ik kan overzien, ik ken je tabelindeling natuurlijk niet, maar als je nu op 1 fietssoort selecteerd, dan kan dat ook op meerdere.
 
Lasse

Lasse

08/03/2007 17:34:00
Quote Anchor link
Nee, dat werkt niet, want dan vraag je eigenlijk of 1 veld twee verschillende waardes heeft.
Ik zal even zeggen hoe de tabelindeling is:

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
----fietsverkoper----
id    name

1    piet
2    jan
3    kees

----fietssoort-----
id    name

1    merk1
2    merk2
3    merk3

----interactie-----
id    soortid    verkoperid

1    1        1
2    1        2
3    2        2
4    2        3
5    3        1
6    3        3




Ik hoop dat het nu iets duidelijker is:D
Gewijzigd op 01/01/1970 01:00:00 door Lasse
 
Lasse

Lasse

08/03/2007 21:55:00
Quote Anchor link
*BUMP*
 
Joren de Wit

Joren de Wit

08/03/2007 23:43:00
Quote Anchor link
Bumpen pas na 24 uur!

Maar goed, ervan uitgaande dat het op een of andere manier mogelijk moet zijn, ben ik maar even gaan puzzelen.

Het probleem waar je tegen aan loopt, is dat je alleen de records op moet halen waarbij er in de koppeltabel een record bestaat voor alle geselecteerde keuzes. Nu kun je zoals je zelf al terecht opmerkte niet een oplossing gebruiken als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
... WHERE soortid = 1 AND soortid = 2

Aangezien soortid natuurlijk nooit tegelijk 2 dezelfde waardes kan hebben. Wel kun je alle records ophalen die aan 1 (of meer) van de geselecteerde waarden voldoen. Om nu te controleren of een bepaalde verkoper ook alle soorten verkoopt (lees: voor elke geselecteerd soort een record in de koppeltabel bestaat), zou je het aantal records per verkoper moeten tellen en dat vervolgens moeten vergelijken met het aantal soorten dat door de gebruiker gekozen is.

De brongegevens waarmee ik aan de slag ben gegaan:
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
28
29
30
31
32
33
34
mysql> SELECT * FROM verkopers;
+----+------+
| id | naam |
+----+------+
| 1  | jan  |
| 2  | kees |
| 3  | piet |
+----+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM soort;
+----+-------+
| id | soort |
+----+-------+
| 1  | merk1 |
| 2  | merk2 |
| 3  | merk3 |
+----+-------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM verkoper_soort;
+----+-----+-----+
| id | vid | sid |
+----+-----+-----+
| 1  | 1   | 1   |
| 2  | 1   | 2   |
| 3  | 1   | 3   |
| 4  | 2   | 2   |
| 5  | 2   | 3   |
| 6  | 3   | 1   |
| 7  | 3   | 2   |
| 8  | 3   | 3   |
+----+-----+-----+
8 rows in set (0.00 sec)

De variabelen die je nu vooraf moet kennen zijn ten eerste de keuzes die door de gebruiker gemaakt zijn in de vorm van het soortid en het totaal aantal soorten dat door de gebruiker geselecteerd is.

In dit voorbeeld ga ik ervan uit dat een gebruiker op zoek is naar een verkoper die zowel de fietsen van merk1 en merk3 verkoopt. En nu dan de query die dit alles mogelijk maakt:
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
SELECT
    verkopers.naam
FROM
    verkopers,
    (SELECT
        vid,
        COUNT(*) AS totaal
    FROM
        verkoper_soort
    WHERE
        sid IN (1, 3)
    GROUP BY
        vid
    ) AS verkoper_soort_result
WHERE
    verkoper_soort_result.vid = verkopers.id
AND
    verkoper_soort_result.totaal = 2;

Je ziet dat er op 2 plaatsen variabelen ingevuld dienen te worden. Binnen de IN() vul je de geselecteerde soorten gescheiden door een komma in en op de plaats van de 2 komt het totaal aantal geselecteerde soorten te staan.

Om aan te tonen dat dit werkt, ook nog 3 voorbeeldjes:
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
mysql> SELECT verkopers.naam FROM verkopers, (SELECT vid, COUNT(*) AS totaal FROM verkoper_soort WHERE sid IN (1,3) GROUP BY vid) AS verkoper_soort_result WHERE verkoper_soort_result.vid = verkopers.id AND verkoper_soort_result.totaal = 2;
+------+
| naam |
+------+
| jan  |
| piet |
+------+
2 rows in set (0.00 sec)

mysql> SELECT verkopers.naam FROM verkopers, (SELECT vid, COUNT(*) AS totaal FROM verkoper_soort WHERE sid IN (1,2,3) GROUP BY vid) AS verkoper_soort_result WHERE verkoper_soort_result.vid = verkopers.id AND verkoper_soort_result.totaal = 3;
+------+
| naam |
+------+
| jan  |
| piet |
+------+
2 rows in set (0.00 sec)

mysql> SELECT verkopers.naam FROM verkopers, (SELECT vid, COUNT(*) AS totaal FROM verkoper_soort WHERE sid IN (2) GROUP BY vid) AS verkoper_soort_result WHERE verkoper_soort_result.vid = verkopers.id AND verkoper_soort_result.totaal = 1;
+------+
| naam |
+------+
| jan  |
| kees |
| piet |
+------+
3 rows in set (0.00 sec)


ps. Wie weet is er een minder omslachtige manier. Ik ben benieuwd of die hier dan boven tafel komt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Lasse

Lasse

09/03/2007 17:20:00
Quote Anchor link
Geniaal. Ik wist niet dat dit soort constructies konden.
Misschien kan het inderdaad nog efficiënter, maar ik vindt het zo ook prima, want ik was al geneigd om met meerdere querys te gaan prutsen.
Persoonlijk had ik denk ik eerder voor zo'n constructie gekozen:
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
SELECT
    verkopers.naam
FROM
    verkopers
INNER JOIN
    (SELECT
        vid,
        COUNT(*) AS totaal
    FROM
        verkoper_soort
    WHERE
        sid IN (1, 3)
    GROUP BY
        vid
    ) AS verkoper_soort_result
    ON
        verkoper_soort_result.vid = verkopers.id
WHERE
    verkoper_soort_result.totaal = 2;

Maar dat is ieder zijn mening:D
In ieder geval hartstikke bedankt!
 
Robert Deiman

Robert Deiman

09/03/2007 19:00:00
Quote Anchor link
@blauwtje

Jou constructie is hetzelfde als die van Blanche, ware het niet dat jij de tekst INNER JOIN gebruikt. De WHERE verkoper_soort_result.vid=verkopers.id betekend in dit geval een join op die kolommen.
Het verschil in beide query's is dus eigenlijk 0,0 alleen de schrijfwijze is een beetje anders.
 



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.