Dies ist eine alte Version des Dokuments!


LU09b: Üben – JOINs im Reiseblog

Ziel: JOINs selbst anwenden (INNER JOIN & WHERE-Variante). Arbeiten Sie direkt auf der DB aus LU08c.

Geben Sie Post-ID, Titel, Autor aus – einmal mit INNER JOIN, einmal mit WHERE-Schreibweise. Nach Post-ID sortieren.

Erwartete Spalten: post_id, title, author

Listen Sie alle Posttitel auf, die zur Kategorie „Städtereise“ gehören (slug = 'staedtereise' ). Sortieren Sie nach Titel.

Geben Sie Titel, Autor, Kategorie aus (eine Zeile pro Kategorie). Nach Titel, dann Kategorie sortieren.

Tipp: Sie brauchen drei Tabellen (posts, post_category, categories) – plus users, wenn der Autor gezeigt werden soll.

Zeigen Sie alle Titel der Posts, die von „Martin Merten“ geschrieben wurden.

Finden Sie alle Kategorien, in denen Caro Steig mindestens einen Post hat. (Nur Kategorienamen ausgeben, ohne doppelte Zeilen.)

Tipp: SELECT DISTINCT c.name …

A1 – Variante JOIN:

SELECT p.post_id, p.title, u.display_name AS author
FROM posts p
INNER JOIN users u ON p.author_id = u.user_id
ORDER BY p.post_id;

A2 – Kategorie „Städtereise“:

SELECT p.title
FROM posts p
INNER JOIN post_category pc ON p.post_id = pc.post_id
INNER JOIN categories c ON pc.category_id = c.category_id
WHERE c.slug = 'staedtereise'
ORDER BY p.title;

A3 – Titel, Autor, Kategorie:

SELECT p.title, u.display_name AS author, c.name AS category
FROM posts p
INNER JOIN users u ON p.author_id = u.user_id
INNER JOIN post_category pc ON p.post_id = pc.post_id
INNER JOIN categories c ON pc.category_id = c.category_id
ORDER BY p.title, c.name;

A4 – Posts von Martin:

SELECT p.title
FROM posts p
INNER JOIN users u ON p.author_id = u.user_id
WHERE u.display_name = 'Martin Merten'
ORDER BY p.title;

A5 (optional) – Kategorien von Caro (DISTINCT):

SELECT DISTINCT c.name
FROM categories c
INNER JOIN post_category pc ON c.category_id = pc.category_id
INNER JOIN posts p ON pc.post_id = p.post_id
INNER JOIN users u ON p.author_id = u.user_id
WHERE u.display_name = 'Caro Steig'
ORDER BY c.name;

INNER JOIN … ON – moderne, klare Schreibweise.

Mehrere Tabellen nach FROM + WHERE – ältere Variante, fachlich gleichwertig.

Join-Pfad denken: Von der Tabelle loslaufen, die Sie anzeigen möchten, dann Schritt für Schritt zu den benötigten Infos verbinden (z. B. posts → users oder posts → post_category → categories).

DISTINCT hilft gegen Dubletten bei N:M-Abfragen.

ORDER BY erst am Schluss – bestimmt die Ausgabe-Reihenfolge.

Weiter geht’s: In den nächsten Lerneinheiten erweitern wir die Abfragen (z. B. Zählen/Gruppieren) und üben typische Muster aus der Praxis.

  • modul/m290_guko/learningunits/lu09/aufgaben/a_multi_table_select.1761503039.txt.gz
  • Zuletzt geändert: 2025/10/26 19:23
  • von gkoch