Subqueries wegwerken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP / Laravel developer zal je in een klein team terecht komen. Wij zijn op zoek naar een echte specialist, iemand die de balans weet te vinden tussen techniek en perfectie. In de aankomende jaren wilt dit bedrijf flink groeien en daarom zijn ze op zoek naar jou! Wat ga je doen? Je draagt bij aan het ontwikkelen en onderhouden van bestaande webapplicaties die boordevol functionaliteit zitten. Deze applicaties worden gebruikt door de organisatie zelf en ook door de klanten. Inmiddels wordt er gewerkt met Laravel 8 en zijn er diverse koppelingen naar externe leveranciers. Verder zal

Bekijk vacature »

SQL Developer

Functie omschrijving Altijd al willen werken bij een snelgroeiend bedrijf, actief in de logistieke sector? Dit is je kans! Ik ben op zoek naar een ervaren SQL Developer in de omgeving Tilburg. Dit bedrijf is gespecialiseerd in in de ontwikkeling van software en maatwerk oplossingen voor het automatiseren van logistieke processen. Klanten zijn o.a. BOL en andere grote distributiecentrums. Jouw taken worden vooral: Verantwoordelijk voor ontwikkelen van stored procedures, voor snelle afhandeling van data; Optimalisatie van de SQL query's en T-SQL query's; Jij gaat je bezig houden met ontwerpen, ontwikkelen en optimaliseren van de MS SQL Databases; In deze functie

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

C#.NET ontwikkelaar

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een C#.NET ontwikkelaar. Je bent verantwoordelijk voor het ontwikkelen van dashboards, webapplicaties en apps voor de eigen IOT-oplossingen. Samen met een vooruitstrevend team van ontwikkelaars en engineers krijgen jullie de opdracht om de sensoren in de apparatuur te scannen en vervolgens de data om te zetten in belangrijke inzichten voor de klanten. Taken en verantwoordelijkheden: Heb jij ideeën over nieuwe technieken die jullie kunnen implementeren? Hier wordt echt naar je geluisterd en gekeken of jouw idee daadwerkelijk ingezet kan worden; Je gaat aan de slag met de

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Intern - Junior PHP ontwikkelaar in fris en jong t

Bedrijfsomschrijving Werk jij graag een in fris, flexibel en jong team? Bij ons ben jij vrij om te bepalen waar jij het liefst werkt en op de vrijdag komen wij gezellig bij elkaar op kantoor. Flexibiliteit en vrijheid zijn bij ons de norm en dat geeft jou de ruimte en energie om het beste uit jezelf te halen! Ons team bestaat uit vijf enthousiaste collega's die jou graag ondersteunen in zowel je persoonlijke als professionele ontwikkeling. Met twee ervaren Senior Developers als mentoren ben jij in goede handen. Wij zien onszelf als een vriendengroep die gezamenlijk werken aan iets moois

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

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 »

PHP Developer Symfony

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail. Hier ga je werken Als PHP Developer kom je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development teams welke ieder verantwoordelijk zijn voor hun 'eigen' klanten. Jouw team bestaat uit 6 backend

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »
Jelmer -

Jelmer -

13/06/2009 17:50:00
Quote Anchor link
Kleine uitdaging: Kan ik de twee subqueries met MIN en MAX omschrijven in JOINS? Volgens mij weerhouden deze dependant subqueries mij van toegant tot de query cache van mysql :)

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
35
36
37
38
39
SELECT
    t.id,
    t.title,
    t.locked_on,
    t.locked_by_user_id,
    t.deleted_on,
    t.deleted_by_user_id,
    f_p.user_id as creating_user_id,
    f_p.created_on as created_on,
    l_p.user_id as last_replying_user_id,
    l_p.created_on as last_replied_on,
    COUNT(p_c.id) as post_count
FROM
    topics as t
INNER JOIN posts as f_p_r ON
    f_p_r.id = (SELECT MIN(id) FROM posts WHERE posts.topic_id = t.id)
INNER JOIN post_versions as f_p ON
    f_p.id = (SELECT MIN(id) FROM post_versions WHERE post_id = f_p_r.id)
INNER JOIN posts as l_p_r ON
    l_p_r.id = (SELECT MAX(id) FROM posts WHERE posts.topic_id = t.id)
INNER JOIN post_versions as l_p ON
    l_p.id = (SELECT MAX(id) from post_versions WHERE post_id = l_p_r.id)
LEFT JOIN posts as p_c ON
    p_c.topic_id = t.id
WHERE
    t.deleted_on IS NULL
GROUP BY
    t.id,
    t.title,
    t.locked_on,
    t.locked_by_user_id,
    t.deleted_on,
    t.deleted_by_user_id,
    f_p.user_id,
    f_p.created_on,
    l_p.user_id,
    l_p.created_on
ORDER BY
    last_replied_on DESC


Kleine uitleg over de structuur:
Ieder topic heeft posts (tabel: posts) Iedere post heeft versies (tabel: post_versions) en de eigenaar van een topic is de schrijver van de eerste post-versie, net als dat de laatst reagerende de schrijver van de laatste versie van een van de posts in het topic is. Hetzelfde geldt voor de starttijd en laatste-reactie tijd.

De tabel posts is eigenlijk een beetje vreemd. Het zorgt ervoor dat iedere unieke post zeg maar bij één topic hoort, en alle post_versions verwijzen weer terug naar deze unieke post. Maar meer staat er niet in. Echter, op zich wil ik hier later misschien nog wel dingen bij stoppen zoals de rechten wie revisies op deze post mag schrijven. [del]Daarnaast is hij nodig om m'n foreign keys in bedwang te houden.[/de] dat is niet waar. Maar ik gebruik het post_id wel om bijvoorbeeld tags aan te koppelen, en de AUTO_INCREMENT & PK geven mij een mooi uniek nummertje daarvoor.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
PHP hulp

PHP hulp

03/05/2024 18:21:58
 
Jesper Diovo

Jesper Diovo

13/06/2009 17:57:00
Quote Anchor link
En je kunt het niet versimpelen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
INNER JOIN posts AS f_p_r ON
  f_p_r.id = MIN(f_p_r.id) AND
  f_p_r.topic_id = t.id
INNER JOIN post_versions AS f_p ON
  f_p.id = MIN(f_p.id) AND
  post_id = f_p_r.id
// etc. etc.
 
Jelmer -

Jelmer -

13/06/2009 18:27:00
Quote Anchor link
Je kan group functions niet op die manier gebruiken. Wat is immers het minimum van f_p_r wanneer je nog aan het bepalen bent welke rows je allemaal in f_p_r wilt hebben?

Ik vat het idee, en als je het volgens mij goed zou uitwerken kom je op dit:
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
35
36
37
38
39
40
41
SELECT
    t.id,
    t.title,
    t.locked_on,
    t.locked_by_user_id,
    t.deleted_on,
    t.deleted_by_user_id,
    f_p.user_id as creating_user_id,
    f_p.created_on as created_on,
    l_p.user_id as last_replying_user_id,
    l_p.created_on as last_replied_on,
    COUNT(p_c.id) as post_count
FROM
    topics as t
LEFT JOIN posts as a_p ON
    a_p.topic_id = t.id
INNER JOIN posts as f_p_r ON
    f_p_r.id = MIN(a_p.id)
INNER JOIN post_versions as f_p ON
    f_p.id = (SELECT MIN(id) FROM post_versions WHERE post_id = f_p_r.id)
INNER JOIN posts as l_p_r ON
    l_p_r.id = MAX(a_p.id)
INNER JOIN post_versions as l_p ON
    l_p.id = (SELECT MAX(id) from post_versions WHERE post_id = l_p_r.id)
LEFT JOIN posts as p_c ON
    p_c.topic_id = t.id
WHERE
    t.deleted_on IS NULL
GROUP BY
    t.id,
    t.title,
    t.locked_on,
    t.locked_by_user_id,
    t.deleted_on,
    t.deleted_by_user_id,
    f_p.user_id,
    f_p.created_on,
    l_p.user_id,
    l_p.created_on
ORDER BY
    last_replied_on DESC

Je selecteert eerst alle posts die bij het topic horen, en pakt dan de eerste en laatste. Maar je kan MIN en MAX op dat moment, tijdens het selecteren en combineren van je rows nog niet gebruiken.

Een andere oplossing waar ik aan denk is om alles bij elkaar te joinen, en dan met order by de goeie rows in de juiste positie te schuiven, zodat het eerste resultaat van de query is wat ik nodig heb. Die zou je er dan af kunnen schuiven met LIMIT 1, ware het niet dat ik dit voor alle (of een setje) topics wil ophalen. En het is langzamer wss, omdat hij onnodig (heel veel onnodig) veel JOINS moet uitvoeren en rows moet bedenken.

edit: het probleem is zeg maar dat ik niet alleen de waarde van MIN(x) wil hebben, ik wil twee waarden hebben uit de row waarbij x het laagste is.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 



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.