LoslegenKostenlos loslegen

CTEs zusammenstellen

Nachdem du nun die beiden Unterabfragen zur Identifizierung der Heim- und Auswärtsgegner erstellt hast, ist es an der Zeit, deine Abfrage mit den home- und away-Unterabfragen als allgemeine Tabellenausdrücke (CTEs) umzugestalten. Du wirst feststellen, dass die Hauptabfrage eine SELECT DISTINCT-Anweisung enthält. Wenn du nicht nur mit DISTINCT nach Spielen suchst, kann es sein, dass du für jedes gespielte Spiel einen doppelten Eintrag erhältst.

Baue die Abfrage weiter aus, um alle Spiele von Manchester United in der Saison 2014/15 zu extrahieren.

Diese Übung ist Teil des Kurses

Datenbearbeitung in SQL

Kurs anzeigen

Anleitung zur Übung

  • Deklariere die CTEs home und away vor deiner Hauptabfrage.
  • Verbinde deine CTEs mit Hilfe von LEFT JOIN mit der Spieltabelle.
  • Wähle die relevanten Daten aus den CTEs in der Hauptabfrage aus.
  • Wähle das Datum aus match, die Mannschaftsnamen aus den CTEs und die Heim-/Gasttore aus match in der Hauptabfrage.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

-- Set up the home team CTE
___ ___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
		   WHEN m.home_goal < m.away_goal THEN 'MU Loss' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
		   WHEN m.home_goal < m.away_goal THEN 'MU Win' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
    ___.___,
    ___.___ AS home_team_name,
    ___.___ AS away_team_name,
    ___.___,
    m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
      AND (home.team_long_name = 'Manchester United' 
           OR away.team_long_name = 'Manchester United');
Code bearbeiten und ausführen