Detta är kanske en mycket dum fråga men jag kommer inte på hur jag ska göra.
Jag ska hämta ut saker från två tabeller, ordningen ska vara senaste datum först. Problemet finns i att jag vill ha unikt värde på en av fälten.
Exempel hur jag får nu
ID ID2 DATUM övrigt
14 1 070210 ------
15 1 070209 ------
17 2 070209 ------
Men vill ha
ID ID2 DATUM övrigt
14 1 070210 ------
17 2 070209 ------
19 3 070209 ------
SELECT
tbl1.ID, tbl1.Datum, tbl1.övrigt
tbl2.ID2, tbl2.övrigt
FROM tbl1
RIGHT JOIN tbl2 ON tbl2.j_ID = tbl1.j_ID
ORDER BY tbl1.Datum DESC
LIMIT 0, 3
Jag vill att ID2-värden som jag får ut ska vara unika. Hjälp mig att lösa problemet.
Tack på förhand!
group by tb2.ID2 innan order by kanske gör susen
Problemet uppstår med datumordningen... Jag får ut gamla rader och inte de senaste. Det är helt skum ordning när jag lägger till GROUP BY tb2.ID2.
Peter SMedlem sedan dec. 20025 483 inlägg Nu nämner du ej vilken version av DBMS som används, men testa:
SELECT
tbl1.ID, tbl1.Datum, tbl1.övrigt
tbl2.ID2, tbl2.övrigt
FROM tbl1
RIGHT JOIN tbl2 t2 ON tbl2.j_ID = tbl1.j_ID
GROUP BY
tbl1.ID, tbl1.Datum, tbl1.övrigt
tbl2.ID2, tbl2.övrigt
HAVING
tbl1.Datum
= ( SELECT max(ti1.datum)
FROM tbl1 ti1
RIGHT
JOIN tbl2 ti2
ON ti2.j_ID = ti1.j_ID
WHERE ti2.ID2 = t2.ID2 )
ORDER BY tbl1.Datum DESC
LIMIT 0, 3
Jag provade frågan men inreselect ser inte ut att fungera i MySQL 3.23.46 som webbhotellet kör med.
emissionMedlem sedan dec. 19996 721 inlägg Oj! Det var en gammal MySQL! Det är helt riktigt att det inte fungerar i en så gammal version.
LarsGMedlem sedan dec. 200012 464 inlägg Med subselect
select <kolumnerAvIntresse>
from t1 q
where dateColumn in
(select max(dateColumn)
from t1
where t1.id = q.id)
utan subselect
select q.<kolumnerAvIntresse>
from t1 q join t1 on q.id = t1.id
group by q.<kolumnerAvIntresse>
having q.dateColumn = max(t1.dateColumn))