Axel Richter: Mysql: Aus zwei Tabellen lesen

Beitrag lesen

Hallo,

Die Tabelle articles dafür sieht etwas so aus:

artikel_id | headline | text | category_id

123456 | Meine Headline | mein Text | allgemein
234567 | Noch eine Headline | mein Text | sport

Tabelle categories mit einer Beschreibung der Kategorien:

category_id | title

allgemein | Allgemeine New
sport | News zum Thema Sport

Ich möchte nun bei der Ausgabe der Artikel die Kategorie mit ausgeben, aber nicht die category_id aus der tabelle articles, sondern den Titel aus categories.

Das ist etwas, was SQL schon immer konnte. Es nennt sich JOIN. Voraussetzung für einen JOIN zweier Tabellen ist, dass die Tabellen in Beziehung zueinander gesetzt werden können. Das erfordert ein Feld, welches in beiden Tabellen identische Daten enthält. Bei Dir wäre das das Feld category_id:

categories:                articles:
category_id--1---+         artikel_id
title            |         headline
                 |         text
                 +------n--category_id

Über dieses Feld lässt sich eine 1:n-Beziehung zwischen den beiden Tabellen beschreiben.

Eine JOIN-Abfrage der Tabellen sähe, nach ANSI-SQL so aus:

SELECT articles.artikel_id, articles.headline, articles.text, categories.title FORM articles INNER JOIN categories ON articles.category_id = categories.category_id

MySQL kann das, den INNER JOIN, auch über eine WHERE-Klausel:

SELECT articles.artikel_id, articles.headline, articles.text, categories.title FORM articles, categories WHERE articles.category_id = categories.category_id

http://dev.mysql.com/doc/mysql/en/JOIN.html

viele Grüße

Axel