2016-04-05 33 views
1

haben also drei Tabellen haben.Doppelte Werte von einer Verknüpfungstabelle

Users(uid,username,email);

Studies(sid, studyname);

Users_Studies(uid,sid);

läßt nun die viel viel Kreuzung sagt Tisch wie bevölkert ist: User_studies(uid,sid) (1,1) (1,2) (1,5) (3,1) (2,1)

ich einen Benutzer erstellen, die uid = 4 bekommt. und ich möchte, dass Benutzer die gleichen Anschlüsse wie uid = 1 was bedeutet, es sollte so aussehen zu bekommen: User_studies(uid,sid) (1,1) (1,2) (1,5) (3,1) (2,1) (4,1) (4,2) (4,5)

Was ist der beste Weg, dies zu umgehen? in gespeicherte Prozeduren und While-Schleife geschaut, ohne es ganz genau herauszufinden :) Gibt es einen einfachen Duplikatbefehl? oder könnte mir bitte jemand auf die beste Weise führen, dies zu tun :)

+0

hmm noch einige Probleme mit ihm haben. Im Versuch, die uid zu erhalten basierend des Benutzernamens und nicht die ID-Wert: P – svennand

+0

figured it out 'insert into User_studies (uid, sid) wählen user.uid, user_studies.sid von Benutzern, Users_studies Wo User.uid = 4 UND User_studies. = 1; ' – svennand

Antwort

0

Sie suchen etwas wie folgt aus:

INSERT INTO User_studies (uid, sid) 
SELECT 4, sid 
FROM User_studies 
WHERE uid = 1 
+0
+0

Ich werde 4 mit einer Variablen aus dem Aufruf der gespeicherten Prozedur ändern. Der Befehl selbst hat funktioniert (gerade versucht) – svennand

+0

@ roadrunner66 "Select 4" gibt immer 4 in dieser Position zurück. Nützlich, wenn Sie einen bekannten Wert, wie eine neue UID, in eine Join-Tabelle einfügen möchten. Es ist die beste Möglichkeit, vorhandene Daten zu duplizieren, aber für eine neue PK. – Karelzarath