Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[mysql] SELECT .. IN (GROUP_CONCAT) werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste devs

Ik wil graag berichten selecteren en de (meerdere) bijhorende ontvangers selecteren. Dit probeer ik via de onderstaande (versimpelde) query;
code:
1
2
3
4
5
6
7
8
9
10
11
SELECT m.id, m.message, GROUP_CONCAT(u.username SEPARATOR ', ') AS user
 FROM (
  SELECT m.id, m.message, GROUP_CONCAT(r.rid SEPARATOR ',') AS ids
  FROM jos_jam AS m
  JOIN jos_jam_receivers AS r ON r.mid = m.id
  WHERE  (r.rid = 62 AND r.inbox = 2) OR (m.sid = 62 AND m.outbox = 2)
  GROUP BY m.id
  LIMIT 10
 ) AS m
 LEFT JOIN jos_users AS u ON u.id IN (m.ids)
 GROUP BY m.id

Ik selecteer eerst een aantal bericht via een subquery omdat dit sneller is, dan alles te selecteren (incl de `users` tabel) en dan er 10 uit te pakken.

Via de query krijg ik het volgende:
IDMESSAGEUSER
1Bla Blagebruiker1
2gfh fghgebruiker2

Terwijl dit moet zijn;
IDMESSAGEUSER
1Bla Blagebruiker1
2gfh fghgebruiker2, gebruiker3, etc


Iemand enig idee hoe ik dit op kan lossen?
De functie IN() lijkt mijn idee niet te ondersteunen en na uren zoeken en proberen is mijn frustratie wat groot. :)

Alvast Bedankt,
Nicholai

Edit1; foutje in query

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 20-10 21:46

KompjoeFriek

Statsidioot

Je kunt ook gewoon een query doen om alle berichten op te vragen, en dan per bericht de gebruikers opvragen met een nieuwe query.

WhatPulse! - Rosetta@Home - Docking@Home


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Die binnenste query is echt overbodig, het kan gewoon prima in 1x. In een aantal gevallen kan jouw constructie een optimalisatie zijn, maar dit is er niet een van, dus keep it simple.

{signature}


Verwijderd

Topicstarter
Voutloos schreef op donderdag 01 mei 2008 @ 15:19:
Die binnenste query is echt overbodig, het kan gewoon prima in 1x. In een aantal gevallen kan jouw constructie een optimalisatie zijn, maar dit is er niet een van, dus keep it simple.
Sorry ik had er een foutje in zitten (LEFT JOIN ipv JOIN).
Toch wil ik jou opmerking tegenspreken; als ik eerst een gedeelte selecteer voordat er andere tabellen bij join, is de query een stuk sneller.
Test ik dan verkeerd? (nog een beetje groen op dev-gebied ;) )

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Verwijderd schreef op woensdag 14 mei 2008 @ 20:45:
Toch wil ik jou opmerking tegenspreken; als ik eerst een gedeelte selecteer voordat er andere tabellen bij join, is de query een stuk sneller.
Test ik dan verkeerd? (nog een beetje groen op dev-gebied ;) )
Waarschijnlijk met cache getest?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten