Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:modul:m290_guko:learningunits:lu09:aufgaben:a_multi_table_select [2026/08/13 16:06] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m290_guko:learningunits:lu09:aufgaben:a_multi_table_select [2026/08/13 16:06] (aktuell) – ↷ Seite von modul:m290_guko:learningunits:lu09:aufgaben:a_multi_table_select nach de:modul:m290_guko:learningunits:lu09:aufgaben:a_multi_table_select verschoben msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU09b: Üben – JOINs im Reiseblog ====== | ||
| + | |||
| + | Ziel: JOINs selbst anwenden (INNER JOIN & WHERE-Variante). Arbeiten Sie direkt auf der DB aus LU08c. | ||
| + | |||
| + | ==== Aufgabe 1 – Posts mit Autor:in ==== | ||
| + | Geben Sie Post-ID, Titel, Autor aus – einmal mit INNER JOIN, einmal mit WHERE-Schreibweise. Nach Post-ID sortieren. | ||
| + | |||
| + | Erwartete Spalten: '' | ||
| + | |||
| + | ==== Aufgabe 2 – Posts pro Kategorie „Städtereise“ ==== | ||
| + | Listen Sie alle Posttitel auf, die zur Kategorie „Städtereise“ gehören ('' | ||
| + | |||
| + | ==== Aufgabe 3 – Posts mit Autor und Kategorien ==== | ||
| + | Geben Sie Titel, Autor, Kategorie aus (eine Zeile pro Kategorie). Nach Titel, dann Kategorie sortieren. | ||
| + | |||
| + | Tipp: Sie brauchen drei Tabellen ('' | ||
| + | |||
| + | ==== Aufgabe 4 – Suche nach Autorname ==== | ||
| + | Zeigen Sie alle Titel der Posts, die von „Martin Merten“ geschrieben wurden. | ||
| + | |||
| + | ==== Aufgabe 5 (optional) – Zählen ohne GROUP BY vermeiden ==== | ||
| + | Finden Sie alle Kategorien, in denen Caro Steig mindestens einen Post hat. (Nur Kategorienamen ausgeben, ohne doppelte Zeilen.) | ||
| + | |||
| + | Tipp: '' | ||
| + | |||
| + | ==== Lösungen (Beispielausschnitte) ==== | ||
| + | A1 – Variante JOIN: | ||
| + | <WRAP center box 80% round>< | ||
| + | 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“: | ||
| + | <WRAP center box 80% round>< | ||
| + | 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 = ' | ||
| + | ORDER BY p.title; | ||
| + | </ | ||
| + | |||
| + | A3 – Titel, Autor, Kategorie: | ||
| + | <WRAP center box 80% round>< | ||
| + | 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: | ||
| + | <WRAP center box 80% round>< | ||
| + | SELECT p.title | ||
| + | FROM posts p | ||
| + | INNER JOIN users u ON p.author_id = u.user_id | ||
| + | WHERE u.display_name = ' | ||
| + | ORDER BY p.title; | ||
| + | </ | ||
| + | |||
| + | A5 (optional) – Kategorien von Caro (DISTINCT): | ||
| + | <WRAP center box 80% round>< | ||
| + | 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; | ||
| + | </ | ||
| + | |||
| + | ==== Kurz-Referenz ==== | ||
| + | |||
| + | 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. '' | ||
| + | |||
| + | DISTINCT hilft gegen Dubletten bei N: | ||
| + | |||
| + | ORDER BY erst am Schluss – bestimmt die Ausgabe-Reihenfolge. | ||