Insert into + select

Ich habe folgendes Problem:

In einer mysql Datenbank habe ich folgende Tabellen angelegt:

CREATE TABLE mitarbeiter (
m INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL);

CREATE TABLE vorgesetzte (
m_vor INT,
m_mit INT);

In der Tabelle vorgesetzte sollen nun unter m_vor die Nummern der Vorgesetzten und unter m_mit die Nummern der Mitarbeiter stehen.

Wie kann ich hier ueber den Namen der Mitarbeiter einen Eintrag vornehmen?

Ich habe folgendes versucht:

INSERT INTO vorgesetzte (m_vor,m_mit) SELECT mitarbeiter.m FROM mitarbeiter WHERE
name=‚Meier‘ UNION SELECT mitarbeiter.m FROM mitarbeiter WHERE name=‚Mueller‘;

Dies sollte darstellen, dass Meier der Chef von Mueller ist. Leider unterstuetzt mysql kein UNION.

Danke fuer’s drueber nachdenken.

Gruss,
Christoph

INSERT INTO vorgesetzte (m_vor,m_mit)
SELECT mitarbeiter.m FROM mitarbeiter
WHERE
name=‚Meier‘ UNION SELECT mitarbeiter.m
FROM mitarbeiter WHERE name=‚Mueller‘;

Hmmm… ich meine, Du hast ja eine eindeutige Nummer, ich würde nie über den Namen gehen (was passiert wenn es zwei Müllers gibt?). Normal hast Du vorher beides selektiert (Nummer und Name) und insertest dann entsprechend…

Ansonsten könnte ich mir folgendes vorstellen:

a) Zwei Schritte:
INSERT INTO vorgesetzte (m_vor,m_mit)
SELECT mitarbeiter.m, null FROM mitarbeiter
WHERE name=‚Meier‘;

UPDATE vorgesetzte SET m_mit = (SELECT m FROM mitarbeiter
WHERE name=‚Mueller‘)
WHERE m_mit Is Null;
(Ob das MySQL rafft? Probier es aus!)

b) Brutalotour: Kreuzprodukt bilden und durch WHERE-Klausel den richtigen selektieren:

INSERT INTO vorgesetzte (m_vor,m_mit)
SELECT m1.m m_vor, m2.m m_mit
FROM mitarbeiter m1, mitarbeiter m2
WHERE m1.name='Meier AND m2.name=‚Mueller‘;

Das ist brutalissimo, aber wenn Du eine kleine Firma abbilden sollst und kein Konzern, dürfte das tun.

So aber jetzt gehe ich nach Hause.

Gruß

J.