2013-10-24 4 views
1

Я пытаюсь получить для каждого элемента «spielplan» только один элемент (последний) «live_spiele». В этом весь запрос:sql left join limit subquery

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 

но это дает мне более чем на 1 строку для элемента в «spielplan», если есть несколько строк «live_spiele» с тем же идентификатором.

То, что я пытался, было MIN/MAX в подзапросе, но это не помогает, потому что значение MIN/MAX обычно не является правильным для идентификатора. Я также пробовал с LIMIT, но я не получаю решение.

Есть ли способ выбрать только «live_spielplan», где идентификатор совпадает с идентификатором «spielplan s»?

+0

также использовать GROUP BY !!! группа по имени столбца, которое вы хотите быть уникальным –

ответ

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 
+0

Хорошо, спасибо. Я решил это с помощью этого sol query = "SELECT live.resh как l_resh, live.resa как l_resa, s.spielid, s.datum, s.zeit, s.ort, t.name, t.kurzname, s.gegner, s.resh, s.resa от spielplan сек LEFT JOIN (выберите * из live_spiele л ORDER BY l.livespiel_id DESC) живут на s.spielid = live.spiel_id, команды т WHERE DATE (с. datum) BETWEEN '". $ date1."' AND '". $ date2."' AND s.teamid = t.teamid GROUP BY s.spielid ORDER BY datum, zeit "; – fsulser

+0

В любом случае, у вас есть то, что вы хотели. Выбор названия колонок был до вас .. :) –