次のクエリを使用して、チームの過去 20 試合のセットを取得しています。過去 20 試合で得点したゴールを見つけて、結果を (ゴール、日付) で並べ替えたいと思います。
SELECT * FROM (
SELECT *, `against` AS `goalsF` , `for` AS `goalsA`
FROM `matches` , `teams` , `outcomes`
WHERE(
`home_team_id`=7 AND `matches`.away_team_id = `teams`.team_id
OR
`away_team_id`=7 AND `matches`.home_team_id = `teams`.team_id
)
AND `matches`.score_id = `outcomes`.outcome_id
ORDER BY `date` DESC
LIMIT 0 , 20
) res
ORDER BY `goalsF`
問題はそれです:
- 検索しているチームがホーム チームの場合、「goalsfor」をカウントする必要があります。
- チームがアウェイ チームにいる場合、ゴールを見つけるために「goalsagainst」をカウントする必要があります。
だから私ができるようにする必要があるのは次のようなものです:
if (`home_team_id`=7 AND `matches`.away_team_id = `teams`.team_id)
SELECT *, `for` AS `goalsF` , `against` AS `goalsA`
if (`away_team_id`=7 AND `matches`.home_team_id = `teams`.team_id)
SELECT *, `against` AS `goalsF` , `for` AS `goalsA`
ただし、これはサブセットまたは結果に対して実行する必要があります。これが可能かどうかはわかりませんが、MYSQL に関する私の知識を超えています。
どんな助けでも大歓迎です。
アラン。