• 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

  • Fallen Kingdom Game

    gozmeu 27 juli 2026 om 23:49
  • Crimora.nl

    Dennii 11 juli 2026 om 13:13
  • RPG game gebouwd met AI

    zwpgangster 9 juli 2026 om 11:25
  • (Verkoop) Criminals

    Syntax 5 juli 2026 om 13:22
  • Het Grote Vibe Code Topic

    Syntax 30 juni 2026 om 11:54
  • Ictscripters Chat

    Jeffrey.Hoekman 26 juni 2026 om 16:21
  • Het oorspronkelijke Criminals Script

    Jeroen.G 24 juni 2026 om 09:21
  • StraatBaas is back, maar hoe?!

    Syntax 17 juni 2026 om 10:28

Marktplaats

  • Straatbaas.eu – complete Nederlandstalige en Engelstalige online maffia-RPG

    Syntax 28 juli 2026 om 15:47
  • 306 Nieuwe Domeinnamen Juni 2026

    shiga 1 juli 2026 om 13:39
  • 4-letter domein: Togi.nl

    evesi 17 juni 2026 om 17:08

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

  • Quanscient ontvangt €10M om AI- en kwantum-native hardware engineering te bevorderen - Tech.eu

    ICTscripters 27 mei 2026 om 12:03
  • Datalek bij leverancier Canvas - Universiteit van Amsterdam

    ICTscripters 10 mei 2026 om 12:03
  • Data privacy in 2026: Hoe de naleving van GDPR verandert

    ICTscripters 8 mei 2026 om 12:16

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