• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

SQL inner join met subquery

  • wimmpie
  • 2 september 2015 om 23:05
  • wimmpie
    âllo âllo
    Ontvangen Reacties
    11
    Berichten
    1.170
    • 2 september 2015 om 23:05
    • #1

    Hallo allemaal,

    Ik heb een probleem met mijn lijn SQL code.

    Het idee van de code kan je vergelijken met je berichten op je smartphone (de index, niet 1 specifieke conversatie die je wilt lezen)

    De bedoeling is dat er verschillende conversaties getoond worden en van elke conversatie wordt het laatst gestuurde bericht getoond.

    Dit wil ik dus met de volgende code doen:

    SQL
    SELECT conversations.id, conversations.favourite, conversations.participant1, conversations.participant2, messages.reaction, messages.reactionDate 
    FROM conversations 
    INNER JOIN (
    	SELECT * 
    	FROM messages 
    	WHERE conversationId = conversations.id 
    	ORDER BY reactionDate 
    	DESC LIMIT 0,1
    	) messages 
    ON conversations.id = messages.conversationId
    WHERE (conversations.participant1 = ? OR conversations.participant2 = ?)
    ORDER BY conversations.favourite, messages.reactionDate 
    DESC LIMIT 0, 30
    Toon Meer

    Uiteraard kan ik de conversations.id nog niet gebruiken in de subquery, omdat hij nog niet geselecteerd is.

    Hoe moet ik dit oplossen? Ik heb al redelijk wat gegoogled maar ik geraak er niet aan uit.

    Alvast bedank!

    Vriendelijke groeten,
    Willem

  • Guest, wil je besparen op je domeinnamen? (ad)
  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 3 september 2015 om 21:21
    • #2

    Een makkelijke manier is denk ik om bij een conversatie bij te houden wat de laatste reactie (het laatste reactie-id) is.

    Je slaat dan weliswaar redundante (afleidbare) informatie op, maar je queries worden dan volgens mij een stuk simpeler :). In dat geval kun je via een simpele INNER JOIN meteen de juiste message.reaction ophalen.

  • wimmpie
    âllo âllo
    Ontvangen Reacties
    11
    Berichten
    1.170
    • 3 september 2015 om 22:29
    • #3

    Jammer, ik wou mijn sql skills wat upgraden.
    Maar gezien het feit dat niemand het hier -blijkbaar- echt weet, is het misschien wel handiger om op jou manier te werken.

    Bedankt voor de tip!

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 4 september 2015 om 16:12
    • #4

    Meh, je zou het ook met een subquery kunnen oplossen:

    SQL
    SELECT ...
    FROM conversations c, messages m
    WHERE messages.id = (SELECT MAX(id) FROM messages WHERE conversationId = c.id)
    AND ...
    ORDER BY c.favourite, m.id DESC
    LIMIT 0, 30

    Er vanuitgaande dat er een messages.id kolom is. Moet je trouwens niet ook aflopend sorteren op c.favourite? Eerst de favoriete conversaties, dan de normale?

    Sorteren kan ook op id, immers, de reactionDates volgen dezelfde sortering als id's (een reactie die later gegeven heeft heeft zowel een hoger id als een latere datum).

    Mogelijk moet je nog kijken naar indexen (bijvoorbeeld op messages.conversationId, als je niet al van foreign keys gebruik maakt, in welk geval er al automatisch geindexeerd wordt) om de query efficient te houden.

  • DirkZz
    Intermediate
    Ontvangen Reacties
    29
    Berichten
    213
    • 8 september 2015 om 21:53
    • #5

    Volgens mij kan het veel eenvoudiger, of ik zit met mijn vermoeide hoofd compleet verkeerd te denken:

    SQL
    SELECT C.name, MAX(M.date) AS last_reaction_date
    FROM conversations AS C
    JOIN messages AS M ON M.conversation_id=C.id
    GROUP BY M.conversation_id
  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 8 september 2015 om 22:29
    • #6

    Dat zou een makkelijkere oplossing zijn geweest, ware het niet dat de gewenste informatie (onder andere) de laatste message van een conversation is (en niet enkel simpelweg de datum), volgens mij kun je niet garanderen dat je op die manier de laatstgeplaatste message terugkrijgt als je groepeert op datum...

    But feel free to try :).

  • DirkZz
    Intermediate
    Ontvangen Reacties
    29
    Berichten
    213
    • 11 september 2015 om 21:29
    • #7
    Citaat van FangorN

    Dat zou een makkelijkere oplossing zijn geweest, ware het niet dat de gewenste informatie (onder andere) de laatste message van een conversation is (en niet enkel simpelweg de datum), volgens mij kun je niet garanderen dat je op die manier de laatstgeplaatste message terugkrijgt als je groepeert op datum...

    But feel free to try :).


    Daar had ik inderdaad overheen gelezen.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design