0

私は約 20 のテーブルを持つプレーヤーのデータベースを持っています。特定の選手のデビュー(初出場)を把握しようとしています。データベースには、「外観」と「置換」の 2 つの別個のテーブルがあります。最初に、クエリを個別に正しく取得することができました。つまり、あるクエリで最初に出現した詳細を取得し、別のクエリで置換の詳細を取得することができました。両方のクエリを 1 つにまとめるためにいくつかの手順を試しましたが、試行するたびにいくつかのエラーが発生しました。はい、私もたくさんのグーグルをしました。個別の手順は次のとおりです。

プレーヤーの完全なデビューの詳細を表示します。

SELECT DATE( MatchDateTime ) , tplss_opponents.OpponentName, CONCAT(MatchGoals,"-", MatchGoalsOpponent), PlayerLastName
FROM tplss_matches
JOIN tplss_opponents ON tplss_matches.MatchOpponent = tplss_opponents.opponentID
JOIN tplss_appearances ON tplss_matches.MatchID = tplss_appearances.AppearanceMatchID 
JOIN tplss_players ON tplss_appearances.AppearancePlayerID=  tplss_players.PlayerID
WHERE `PlayerLastName` = "Leo Messi"
ORDER BY `MatchDateTime` ASC 
LIMIT 1;

選手のデビュー詳細を表示します。

SELECT DATE( MatchDateTime ) , tplss_opponents.OpponentName, CONCAT(MatchGoals,"-", MatchGoalsOpponent), PlayerLastName
FROM tplss_matches
JOIN tplss_opponents ON tplss_matches.MatchOpponent = tplss_opponents.opponentID
JOIN tplss_substitutions ON tplss_matches.MatchID = tplss_substitutions.SubstitutionMatchID
JOIN tplss_players ON tplss_substitutions.SubstitutionPlayerIDIn=  tplss_players.PlayerID
WHERE `PlayerLastName` = "Leo Messi"
ORDER BY `MatchDateTime` ASC 
LIMIT 1;

私の目的は、スターターまたはベンチからの交代のいずれか早い方で、試合でプレーしたプレーヤーの最初の記録を見つけることです. これは一般に「デビュー」と呼ばれます。

クエリ出力のサンプル:

DATE OpponentName result PlayerLastName
2005-08-17 ハンガリー 2-1 リオネル・メッシ

ヘルプやガイダンスに感謝します。

4

1 に答える 1

0

「ユニオンオール」とサブクエリで試すことができます:

SELECT * FROM (
-- Select from Debut --
UNION ALL
-- Select from substitution --
) AS tmp
ORDER BY MatchDateTime ASC
LIMIT 1
于 2013-08-19T07:53:11.887 に答える