ingewikkelde JOIN query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Dynamische Oracle/APEX Ontwikkelaar in de logistie

Bedrijfsomschrijving De organisatie in de regio Rotterdam is gespecialiseerd in het ontwikkelen van moderne webbased software voor de ERP branche. In totaal is er 20FTE aan specialisten actief binnen de organisatie. De ICT afdeling bestaat momenteel uit 15FTE. Ze groeien ontzettend hard en daarom zoeken zij een Oracle/APEX Developer die het reeds sterke team nog sterker komt maken. Hier werken ze op projectbasis voor verschillende grote organisaties in de logistieke sector. Het is een informele organisatie waarbinnen een fijne werksfeer heerst. Zoals aangegeven willen ze het team nog sterker maken en daarvoor zoeken ze bij voorkeur medior of senior Oracle/APEX

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Medior PHP developer

Functie Samen met je development team werk je Agile Scrum en met jullie gezamenlijke kennis en ervaring bepalen jullie samen de beste keuze voor techniek en architectuur. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en denkniveau • Je hebt goede kennis en ervaring met PHP • Je bent niet bang voor complexe projecten • Je werkt graag zelfstandig aan applicaties • Je bent altijd nieuwsgierig naar nieuwe

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 »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Belastingdienst - Freelance Applicatieontwikkelaar

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Hybride. Kantoordagen in Utrecht, incidenteel in Apeldoorn Functieomschrijving: De afdeling IV – Generieke Voorzieningen – Interactie Online is onderdeel van de keten Interactie. De missie van de keten is: “het faciliteren van de interactie met alle burgers, bedrijven en hun vertegenwoordigers om hen in staat te stellen aan hun fiscale verplichtingen te voldoen en aanspraak te maken op hun rechten.” De afdeling Interactie Online heeft een belangrijke bijdrage binnen deze keten. Dit door het ontwikkelen

Bekijk vacature »

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

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 »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in een ontwikkelteam met 7 .NET developers. In ons team werken er drie senior .NET developer, twee medior .NET developers en twee junior .NET developers. Er is dan ook genoeg senioriteit in ons team om jou te kunnen bieden wat jij nodig hebt! Wij werken in scrum en hebben drie wekelijkste sprints. Daarnaast doen wij minimaal vier keer per jaar een release. Ons platform is ontzettend complex en groot. Het is dan ook in het begin belangrijk dat jij de processen gaat begrijpen. Jij krijgt dan ook een cursus om beter te begrijpen

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

Lead javascript developer Node.js React

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Front-end developer E-Commere

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als front-end developer heb je een adviserende rol en sta je aan het eindpunt van alles wat met designs te maken heeft. Je overlegt met klanten en collega’s, en zet je in om ideeen om te zetten tot unieke concepten. Je bent het aanspreekpunt voor de klant en bewaakt tevens de planning. Eisen

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

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

24/04/2024 22:29:27
 
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.