• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • nieuwe game

    frio 31 oktober 2026 om 18:06
  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56

Marktplaats

  • [Aanbod] Stadskaart voor je browsergame: van menu naar klikbare stad, vanaf €200

    frio 29 oktober 2026 om 18:17
  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22

SQL inner join met subquery

  • wimmpie
  • 2 september 2015 om 23:05
  • wimmpie
    âllo âllo
    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
    Meer tonen

    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

  • Gast, wil je besparen op je domeinnamen? (ad)
  • FangorN
    Professional
    Artikelen
    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
    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
    Artikelen
    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
    Gevorderd
    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
    Artikelen
    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
    Gevorderd
    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.

Registratie

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

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

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

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design