[SQL] Double Join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze klanten. Geen werkdag is hetzelfde, je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Arval en de Politie. Werken bij Sogeti Nieuwe ontwikkelingen volgen we op de voet en delen we binnen de

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Front End Ontwikkelaar (React)

In het kort Als front end developer ga je aan de slag met maatwerkprojecten voor onze klanten. Denk bijvoorbeeld aan het toevoegen van een machine aan een database of het corrigeren van formulieren voor ingestuurde orders. Voorbeeld van zo’n project is Smart Link. De projecten waar je op ingezet kunt worden liggen binnen het technische domein waar jij als front end developer een grote rol speelt om samen met je back end collega’s de juiste oplossingen te leveren. please note that this particular role requires fluent Dutch language skills. Dit vind je leuk om te doen Het omzetten van designs

Bekijk vacature »

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

Lead Webdeveloper

Als Lead webdeveloper bij KUBUS ben je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de webapplicatie en services van BIMcollab. In je rol als lead developer zoek je als vanzelf op een creatieve manier naar het optimum tussen benodigde implementatie-tijd, de performance van de applicatie en een snelle go-to-market van features, aansluitend bij onze geautomatiseerde test- en release train. Hierbij bewaak je in samenwerking met de andere senior ontwikkelaars in je team de architectuur van de applicatie en adviseer je de product owner over noodzakelijke refactoring om de onderhoudbaarheid van het platform te verbeteren. Ons

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

Bekijk vacature »

Front-end developer (Vue.js) gezocht!

Functie Als Front-end developer is het jouw doel om efficiënte en effectieve frontend code te ontwerpen, ontwikkelen en onderhouden die goed aansluit bij de functionele behoefte vanuit de klant. Je zorgt voor optimale SEO-resultaten, sitespeed en frontend security. You build it, you run it, you own it! Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden

Bekijk vacature »

Front-end developer

Functie Als front-end developer kom je te werken in een team van 30 gedetacheerde, en het team is momenteel flink aan het groeien. Je hebt ervaring met het bouwen van complexe bedrijfsapplicaties waar je gebruik maakt van de nieuwste technologieën waarmee jij elke klant omver blaast. Het gaat om uitdagende projecten met een gemiddelde doorlooptijd van 2 jaar. Hierdoor heb jij echt de volledige focus op een project en kun je flinke impact maken. Het team zit boordevol met ervaren developers die samen dezelfde ambitie delen. Aan de hand van opleidingen en trainingen kun je certificaten halen in jouw expertise

Bekijk vacature »

Frontend Developer - Leeuwarden

Frontend Developer – Leeuwarden Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider

Bekijk vacature »

PHP Developer - Draag bij aan de maatschappij!

Bedrijfsomschrijving Wil jij als applicatieontwikkelaar deel uitmaken van een gedreven ontwikkelteam en werken aan innovatieve producten? Dan hebben wij dé uitdaging voor jou! Wij zijn op zoek naar een enthousiaste collega die samen met ons de technische ondergrond van onze producten verder wil ontwikkelen met behulp van PHP. Met jouw expertise geef je de finishing touch aan onze producten om jezelf steeds opnieuw weer te verrassen. Functieomschrijving Bij ons staan innovatie en creativiteit centraal. Wij zijn op zoek naar een enthousiaste PHP ontwikkelaar die nieuwe ideeën en inzichten kan inbrengen en daarmee zichzelf en het team verder kan laten groeien.

Bekijk vacature »

.NET developer WO niveau voor predictive software

Bedrijfsomschrijving Dit bedrijf uit Den Bosch is om precies te zijn 15 medewerkers groot en ze ontwikkelen (predicitve) planning software. Dit doen zij voor allerlei mooie en bekende organisaties (bierbrouwerijen, gemeentes, oliemaatschappijen en diverse multinationals). Wegens meer en grotere vraag vanuit de klanten komen er nu posities vrij voor onder andere een .NET developer. Het bedrijf is goed met openbaar vervoer te bereiken. Functieomschrijving Je komt hier te werken in een team van 3 .NET developers en bent betrokken bij het gehele ontwikkelproces. Dus van idee naar ontwerp en van ontwikkeling tot testen en implementatie. Bij voorkeur ben je niet

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »
John Cena

John Cena

25/04/2013 12:51:14
Quote Anchor link
Hoi,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT COUNT(reactions.fID) as posts, COUNT(fans.pageId) as fans, `fanpagestatistics`.`pageName`, `fanpagestatistics`.`url`, `fanpagestatistics`.`avatar` FROM (`fanpagestatistics`) JOIN `fans` ON `fans`.`pageId` = `fanpagestatistics`.`id` JOIN `reactions` ON `reactions`.`fId` = `fanpagestatistics`.`id` GROUP BY `fanpagestatistics`.`pageName` ORDER BY `fans` DESC LIMIT 5


Geeft mij ipv de gewenste resultaten(5 posts, 2 fans) results als 10 in beide velden (posts + fans)

Blijkbaar doet de query iets als posts * fans en zet dat dan vervolgens in de beide velden. Maar hoe dat komt en hoe ik het oplos vooral, het is mij één mysterie.

Iemand hier enig idee?
 
PHP hulp

PHP hulp

17/11/2024 22:51:01
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/04/2013 13:45:27
Quote Anchor link
Dat komt dus inderdaad doordat je 2 tabellen joined, zonder de group by zou je posts * fans rijen per pagina krijgen.
Je kan dit oplossen door subquery's te gebruiken voor de totalen:
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
SELECT
    r.posts
    fans.fanamount,
    f.pageName, f.url, f.avatar
FROM fanpagestatistics f
JOIN
    (SELECT
        page_id, COUNT(*) fanamount
    FROM fans
    GROUP BY pageid
    ORDER BY fanamount DESC LIMIT 5    
    ) fans
    ON fans.pageId = f.id
JOIN
    (SELECT
        fid, COUNT(*) posts
    FROM reactions
    GROUP BY fid) r
    ON r.fId = f.id
ORDER BY fans.fanamount DESC
Gewijzigd op 25/04/2013 13:50:53 door Ger van Steenderen
 
Erwin H

Erwin H

25/04/2013 13:46:44
Quote Anchor link
Doe iedereen alsjeblieft eens een lol door die query niet in 1 regel te prakken, maar over meerdere regels uit te schrijven. Je schrijft een hele php pagina toch ook niet op 1 regel?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
  COUNT(reactions.fID) as posts,
  COUNT(fans.pageId) as fans,
  `fanpagestatistics`.`pageName`,
  `fanpagestatistics`.`url`,
  `fanpagestatistics`.`avatar`
FROM (`fanpagestatistics`)
JOIN `fans` ON `fans`.`pageId` = `fanpagestatistics`.`id`
JOIN `reactions` ON `reactions`.`fId` = `fanpagestatistics`.`id`
GROUP BY `fanpagestatistics`.`pageName`
ORDER BY `fans` DESC
LIMIT 5

Dit leest toch een stuk makkelijker of niet?

Dan je probleem. Wat je blijkbaar niet doorhebt is hoe joins werken. Als je een tabel joined aan een andere dan krijg je het voor elk record in beide tabellen een record in de resultset. Heb je dus 1 record in de tabel 'fanpagestatistics', maar 2 in fans die daaraan linken, dan krijg je dus 2 records in je resultset. Vervolgens join je daar nog 'reactions' aan waar blijkbaar 5 records aan linken, dus dan krijg je 2*5 = 10 records.
Vervolgens hebben al die records ook een fID en een pageID, dus in beide counts worden gewoon alle records geteld.

Wat je zal moeten doen is die count functie al uitvoeren voor je de join 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
19
SELECT
  b.posts,
  a.fans,
  fanpagestatistics.pageName,
  fanpagestatistics.url,
  fanpagestatistics.avatar
FROM fanpagestatistics
LEFT JOIN (
  SELECT COUNT(*) AS fans, pageId
  FROM fans
  GROUP BY pageId
) a ON a.pageId = fanpagestatistics.id
LEFT JOIN (
  SELECT COUNT(*) AS posts, fID
  FROM reactions
  GROUP BY fID
) b ON b.fID = fanpagestatistics.id
ORDER BY fans DESC
LIMIT 5  
 
John Cena

John Cena

25/04/2013 14:10:57
Quote Anchor link
Goed, sounds legit,
JOIN's is inderdaad niet mijn sterkste punt :)

Hoe ga ik dat dan vervolgens into CI krijgen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$this->db->select('COUNT(reactions.fID) as posts, COUNT(fans.pageId) as fans, fanpagestatistics.pageName, fanpagestatistics.url, fanpagestatistics.avatar');
            $this->db->from('fanpagestatistics');
            $this->db->join('fans', 'fans.pageId = fanpagestatistics.id', 'outer');
            $this->db->join('reactions', 'reactions.fId = fanpagestatistics.id');
            $this->db->group_by('fanpagestatistics.pageName');
            $this->db->order_by('fans', 'DESC');
            $this->db->limit(5);


Toevoeging op 25/04/2013 14:11:17:

Dat is wat ik nu dus heb en dat werkt dus niet helemaal :)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

25/04/2013 14:42:34
Quote Anchor link
Gebruik $this->db->query() ipv van de active record class
 



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.