Varför har du med GROUP BY?
Jag skulle köra med inner join i detta fall.
SELECT blogg.id,blogg.inlagg, anvandare.fullnamn, anvandare.id as personId
FROM blogg
INNER JOIN anvandare ON blogg.anvandare = anvandare.id
ORDER BY blogg.id DESC
4 svar · 333 visningar · startad av JonasG
Hej!
Får inte helt rätt på det.
Har två tabeller.
BLOGG
id
inlagg
anvandare
och
ANVANDARE
id
fullnamn
Gemensam är alltså blogg.anvandare och anvandare.id
SELECT blogg.*, anvandare.fullnamn, anvandare.id as personId FROM blogg LEFT JOIN anvandare ON blogg.anvandare = anvandare.id GROUP BY blogg.anvandare ORDER BY blogg.id DESC
Fungerar så långt att den bara plockar ett blogginlägg per användare, men inte det senaste. Utan mer "godtyckligt". Jag vill alltså ORDER BY blogg.id innan de två Joinas. Känns som att ORDER BY körs efter att de båda läggs ihop, och att det blir godtyckligt vilket inlägg bland flera som en användare har skrivit, som kommer med.
Kör MySQL, PHP.
Varför har du med GROUP BY?
Jag skulle köra med inner join i detta fall.
SELECT blogg.id,blogg.inlagg, anvandare.fullnamn, anvandare.id as personId
FROM blogg
INNER JOIN anvandare ON blogg.anvandare = anvandare.id
ORDER BY blogg.id DESC
Jag behöver ha GROUP BY, eller något annat som löser samma problem, för att jag bara vill ha ett inlägg per användare. Alltså bara det inlägg som har högst ID från varje användare.
SELECT b.id, b.inlagg, a.fullnamn, a.id as personId
FROM blogg b
INNER JOIN anvandare a ON b.anvandare = a.id
where b.id in
(select max(id)
from blogg bl
where bl.anvandare = b.anvandare)
ORDER BY b.id DESC
ah. verkar smart. men subqueries funkar bara från 4.1 va? tyvärr har mitt webbhotell bara 4.0.nånting. ska se om de vill uppgradera.