| |
| * Link führt ins Internet |
|
| |
Tabellen vereinigen (UNION)
|
|
Manchmal kann es vorkommen, dass verschiedene Tabellen teilweise identisch aufgebaut sind oder Felder mit demselben Inhalt besitzen. So könnte eine Tabelle beispielsweise alle Mitglieder und eine weitere alle Interessenten für eine Mitgliedschaft enthalten, die getrennt voneinander aufgeführt werden, da für die Mitglieder teilweise andere Daten gespeichert werden als für die Interessenten.
Um solche Tabellen in einer einzigen Abfrage ausgeben zu können, müssen die Tabellen so kombiniert werden, dass jeweils Teilmengen verwendet werden. Hierfür steht ab Version 4 von MySQL der UNION-Befehl zur Verfügung. UNION fügt identische Datensätze aus verschiedenen Tabellen zu einem Datensatz zusammen und eliminiert dabei doppelte Datensätze.
Die Syntax für UNION lautet:
mysql>SELECT FROM UNION SELECT FROM ;
Hier ein Beispiel zur Ausgabe von Daten aus zwei Tabellen.
Tabellen - mitglieder und interessenten
CREATE TABLE mitglieder (
MitgliedID int(11) NOT NULL auto_increment,
MitgliedVorname char(40) default NULL,
MitgliedNachname char(40) default NULL,
Aufgabe char(40) default NULL,
Geburtsdatum date default NULL,
PRIMARY KEY (MitgliedID)
);
INSERT INTO mitglieder VALUES (1, 'Matthias', 'Kannengiesser', 'Leitung', '1974-11-20');
INSERT INTO mitglieder VALUES (2, 'Caroline', 'Kannengiesser', 'Leitung', '1979-01-04');
INSERT INTO mitglieder VALUES (3, 'Thomas', 'Mustermann', 'Mitglied', '1967-10-10');
CREATE TABLE interessenten(
InteressentenID int(11) NOT NULL auto_increment,
InteressentenVorname char(40) default NULL,
InteressentenNachname char(40) default NULL,
Geburtsdatum date default NULL,
PRIMARY KEY (InteressentenID)
);
INSERT INTO interessenten VALUES (1, 'Manfred', 'Müller', '1990-10-02');
INSERT INTO interessenten VALUES (2, 'Tina', 'Maier', '1978-10-27');
|
Der UNION-Befehl samt Skript für die Ausgabe der Datensätze stellt sich, wie folgt dar:
<?php
$db = mysql_connect ("localhost", "matthias", "");
$SQL_Befehl = "
SELECT
MitgliedID,
MitgliedVorname,
MitgliedNachname,
Geburtsdatum
FROM mitglieder UNION
SELECT
InteressentenID,
InteressentenVorname,
InteressentenNachname,
Geburtsdatum
FROM interessenten
";
$resultat = mysql_db_query("verein", $SQL_Befehl);
while ($daten = mysql_fetch_array($resultat)) {
extract($daten);
echo "
<p>
$MitgliedID<br>
$MitgliedVorname<br>
$MitgliedNachname<br>
$Geburtsdatum
</p>
";
}
mysql_close($db);
?>
|
Ausgabe
1
Matthias
Kannengiesser
1974-11-20
2
Caroline
Kannengiesser
1979-01-04
3
Thomas
Mustermann
1967-10-10
1
Manfred
Müller
1990-10-02
2
Tina
Maier
1978-10-27
|
|
|
|
|
|
|
|