PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SELECT und Fremdschlüssel - stehe auf dem Schlauch


beos
2010-08-09, 15:43:52
Hallo,

ich stehe im Moment auf dem Schlauch. :redface:

Wie schaffe ich es nochmal, das mit einem SELECT Befehl über mehrere Tabellen, die mit Fremdschlüsseln verknüpft sind, im Ergebnis nicht der Fremdschlüssel steht, sondern z.B. der Name auf den der Fremschlüssel zeigt?

Wie z.B. hier (http://dev.mysql.com/doc/refman/5.1/de/example-foreign-keys.html):



CREATE TABLE person (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE shirt (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
PRIMARY KEY (id)
);

SELECT s.* FROM person p, shirt s
WHERE p.name LIKE 'Lilliana%'
AND s.owner = p.id
AND s.color <> 'white';

+----+-------+--------+-------+
| id | style | color | owner |
+----+-------+--------+-------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+----+-------+--------+-------+



Ich möchte gerne den Namen des Owners - nicht die ID.

Oder muss ich sonst immer ein extra SQL Query machen, um herauszufinden, für welchen Owner die ID "2" steht?

Danke für Euere Hilfe :)

Neomi
2010-08-09, 15:52:14
Versuch mal das:

SELECT s.id, s.style, s.color, p.name FROM ...

Frucht-Tiger
2010-08-09, 15:53:27
Extra Query nicht, aber hier

SELECT s.*

wählst du ja nur die Felder von shirt aus, du musst also noch p.name hinzufügen:

SELECT s.*, p.name FROM ....

Edit: zu spät :(

beos
2010-08-09, 16:14:33
Danke Euch beiden - Neomi und Frucht-Tiger =)