我只选择一个用户发布的一个值时遇到问题。
SELECT DISTINCT(zprava.id_prijemce),
uzivatele.jmeno,
uzivatele.prijmeni,
zprava.zobrazeno
FROM zprava
INNER JOIN uzivatele
ON zprava.id_prijemce = uzivatele.id
WHERE id_uzivatele = $id_uzivatele
ORDER BY datum DESC
这就是我得到的:
id_prijemce | jmeno | prijmeni | zobrazeno
31 | Michal | Harych | 0
31 | Michal | Harych | 1
35 | Karel | Pepík | 0
这是我需要得到的:
id_prijemce | jmeno | prijmeni | zobrazeno
31 | Michal | Harych | 1
35 | Karel | Pepík | 0
我不需要获得更高值“zobrazeno”的行,但是最新发布的,所以它也可以是0.
感谢您的建议。
答案 0 :(得分:1)
使用子查询来标识zprava
表中的最新记录,将其加入zprava
和uzivatele
以获得所需的结果。
SELECT
t1.id_prijemce,
t3.jmeno,
t3.prijmeni,
t1.zobrazeno
FROM zprava t1
INNER JOIN
(
SELECT id_prijemce, MAX(datum) AS max_datum
FROM zprava
GROUP BY id_prijemce
) t2
ON t1.id_prijemce = t2.id_prijemce AND
t1.datum = t2.max_datum
INNER JOIN uzivatele t3
ON t1.id_prijemce = t3.id
WHERE t1.id_uzivatele = $id_uzivatele
ORDER BY t1.datum DESC