我试图为“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”中的元素,如果有多行是具有相同标识符的“live_spiele”。
我在子查询中尝试的是MIN/MAX,但这没有帮助,因为MIN/MAX值通常不是标识符的正确值。
我也试过限制,但我没有得到解决办法。
有没有一种方法只选择“live_spielplan”,其中的标识符与“spielplan s”标识符相同?

最佳答案

使用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

10-06 16:15