我试图让“spielplan”的每个元素只获得“live_spiele”的一个元素(最后一个)。 这是整个查询:
SELECT live.resh as l_resh, live.resa as l_resa, s.spielid, s.datum, s.zeit
, s.ort, t.name, t.kurzname, s.gegner, s.resh, s.resa
from spielplan s
LEFT JOIN (Select l.livespiel_id, l.resh, l.resa, l.spiel_id from live_spiele l)
live on s.spielid = live.spiel_id
, teams t
WHERE DATE(s.datum) BETWEEN '".$date1."' AND '".$date2."'
AND s.teamid = t.teamid
ORDER BY datum, zeit
但是对于“spielplan”中的元素,这给了我超过1行,如果有多行是具有相同标识符的“live_spiele”。
我在子查询中尝试的是MIN / MAX,但这没有帮助,因为MIN / MAX值通常不是标识符的正确值。 我也试过LIMIT,但我没有得到解决方案。
有没有办法只选择“live_spielplan”,其中标识符与“spielplan s”标识符相同?
答案 0 :(得分:1)
使用GROUP BY
子句:
SELECT live.resh as l_resh, live.resa as l_resa, s.spielid, s.datum, s.zeit
, s.ort, t.name, t.kurzname, s.gegner, s.resh, s.resa
from spielplan s
LEFT JOIN (Select l.livespiel_id, l.resh, l.resa, l.spiel_id from live_spiele l)
live
on s.spielid = live.spiel_id
, teams t
WHERE DATE(s.datum) BETWEEN '".$date1."' AND '".$date2."'
AND s.teamid = t.teamid
ORDER BY datum, zeit GROUP BY s.spiel_id