Tabellenverknüpfung mit Feldauswahl in SQL (MySQL )
Das folgende Skript legt zwei Tabellen an, die beide eine Spalte namens »LAND« enthalten.
- Konsole (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE STADT
( STADT VARCHAR ( 255 ), BEZEICHNUNG VARCHAR ( 255 ), LAND VARCHAR ( 255 ));INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '1', 'Paris', '1' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '2', 'Marseille', '1' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '3', 'Lyon', '1' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '4', 'Rom', '2' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '5', 'Mailand', '2' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '6', 'Neapel', '2' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '7', 'Tokio', '3' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '8', 'Yokohama', '3' );
INSERT INTO STADT ( STADT, BEZEICHNUNG, LAND ) VALUES ( '9', 'Osaka', '3' );CREATE TABLE LAND ( LAND VARCHAR ( 255 ), BEZEICHNUNG VARCHAR ( 255 ));
INSERT INTO LAND ( LAND, BEZEICHNUNG ) VALUES ( '1', 'Frankreich' );
INSERT INTO LAND ( LAND, BEZEICHNUNG ) VALUES ( '2', 'Italien' );
INSERT INTO LAND ( LAND, BEZEICHNUNG ) VALUES ( '3', 'Japan' );
Wir hatten bereits eine Verbindung solcher Tabellen mit Hilfe einer ON-Klausel erzeugt.
- Konsole (MySQL )
SELECT * FROM STADT INNER JOIN LAND ON STADT.LAND = LAND.LAND;
+-------+-------------+------+------+-------------+
| STADT | BEZEICHNUNG | LAND | LAND | BEZEICHNUNG |
+-------+-------------+------+------+-------------+
| 1 | Paris | 1 | 1 | Frankreich |
| 2 | Marseille | 1 | 1 | Frankreich |
| 3 | Lyon | 1 | 1 | Frankreich |
| 4 | Rom | 2 | 2 | Italien |
| 5 | Mailand | 2 | 2 | Italien |
| 6 | Neapel | 2 | 2 | Italien |
| 7 | Tokio | 3 | 3 | Japan |
| 8 | Yokohama | 3 | 3 | Japan |
| 9 | Osaka | 3 | 3 | Japan |
+-------+-------------+------+------+-------------+
Wenn zwei Tabellen an Hand der Gleichsetzung der Werte einer Spalte, die in beiden Tabellen denselben Namen hat, verbunden werden sollen, so kann auch die spezielle USING-Klausel verwendet werden.
- Konsole (MySQL )
SELECT * FROM STADT INNER JOIN LAND USING( LAND );
+------+-------+-------------+-------------+
| LAND | STADT | BEZEICHNUNG | BEZEICHNUNG |
+------+-------+-------------+-------------+
| 1 | 1 | Paris | Frankreich |
| 1 | 2 | Marseille | Frankreich |
| 1 | 3 | Lyon | Frankreich |
| 2 | 4 | Rom | Italien |
| 2 | 5 | Mailand | Italien |
| 2 | 6 | Neapel | Italien |
| 3 | 7 | Tokio | Japan |
| 3 | 8 | Yokohama | Japan |
| 3 | 9 | Osaka | Japan |
+------+-------+-------------+-------------+- Aussprachehinweis
- using ˈju:zɪŋ (sm)
Bei der Verwendung der USING-Klausel erscheint die zur Verbindung verwendete Spalte dann auch nur noch einmal im Ergebnis der Abfrage, wenn als Auswahlliste »*« verwendet wird.