У меня есть 2 таблицы в моей базе данных, как показано ниже:MySQL таблицы лиги
Ниже команда-Tabel:
id tname poule
1 ZF Eger heren1A
2 Pro Recco heren1A
3 Sintez Kazan heren1A
4 Szolnoki VSE heren1A
5 Sintez Kazan 2 heren1B
6 Szolnoki VSE 2 heren1B
И ниже игра-Tabel:
id date hteam ateam hscore ascore gamefield poule played
1 2008-01-01 20:00:00 1 2 0 0 Veld 1 heren1A 0
2 2008-01-01 20:00:00 3 4 10 8 Veld 2 heren1A 1
Код ниже выполняет sql-запрос в базе данных и выводит таблицу лиг.
SELECT poule AS Poule,
tname AS Team,
Sum(WG) AS WG,
Sum(W) AS W,
Sum(G) AS G,
Sum(V) AS V,
SUM(DV) as DV,
SUM(DT) AS DT,
SUM(S) AS S,
SUM(P) AS P
FROM (
SELECT hteam
Team,
IF(played = 1,1,0) WG,
IF(hscore > ascore,1,0) W,
IF(hscore = ascore,1,0) G,
IF(hscore < ascore,1,0) V,
hscore DV,
ascore DT,
hscore-ascore S,
CASE WHEN hscore > ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END P
FROM games
WHERE played = 1
AND poule = ? OR played = 1
AND poule = ?
UNION ALL
SELECT ateam,
1,
IF(hscore < ascore,1,0),
IF(hscore = ascore,1,0),
IF(hscore > ascore,1,0),
ascore,
hscore,
ascore-hscore S,
CASE WHEN hscore < ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END
FROM games
WHERE played = 1
AND poule = ? OR played = 1
AND poule = ?
) AS tot
JOIN teams t
ON tot.Team=t.id
GROUP BY Team
ORDER BY SUM(P) DESC, s DESC
Проблема я имею:
Команды без сыгранных матчей не выбраны, но я все еще хочу, чтобы они были выбраны потому что мне нужно, чтобы показать полную Poule, даже если нет ссылок играют. Как я могу изменить свой запрос так, чтобы позиция в лиге также показывалась, когда матч не воспроизводился?
Try 'ЛЕВЫЙ JOIN' вместо просто' JOIN'? –
@PraveenKumar Без перезаписи это будет ПРАВОЕ СОЕДИНЕНИЕ, но я соглашусь переписать и LEFT JOIN будет предпочтительнее. – Strawberry