2017-09-22 8 views

Antwort

1

Sieht aus wie Sie versuchen, ein Insert-select-Anweisung zu verwenden:

INSERT INTO srs1.modulegrades 
SELECT  srs1.student.student_id, 
      srs1.modules.module_id, 
      FLOOR(RANFOM() * 10)) 
FROM  srs1.student, srs1.modules; 

Beachten Sie, dass implizite Verknüpfungen (mehr als Tabelle in der from Klausel mit) gelten als veraltet , und Sie würden richtig besser dran, eine explizite Kreuz-Join:

INSERT INTO srs1.modulegrades 
SELECT  srs1.student.student_id, 
      srs1.modules.module_id, 
      FLOOR(RANFOM() * 10)) 
FROM  srs1.student 
CROSS JOIN srs1.modules; 
+0

Danke, das funktioniert hat. Nicht so, wie ich es erwartet habe, aber das ist meine Logik und nicht der Code –

+0

. Ich versuche jetzt, student_id nur 4 Mal zu bekommen. Wie würde ich darüber gehen? –

1

in eine Beziehung Einfügen von bestehenden Beziehung erfordert eine SELECT Klausel. Eine Klausel values wird verwendet, um dynamisch eine Beziehung für die Dateneingabe in das System zu erstellen.

dank Benutzer melpomene nach folgenden Kriterien:

Relevant part of the documentation. Beachten Sie, dass VALUES ... und Query als Alternativen aufgeführt sind. d. h. Sie können nicht sowohl VALUES als auch SELECT ... FROM haben.

Die folgende Beschreibung ist für Ihre Datenbank arbeiten:

INSERT INTO srs1.modulegrades 
    SELECT srs1.student.student_id 
     , srs1.modules.module_id 
     , floor(random() * 10) 
    FROM srs1.student, srs1.modules; 
+1

Relevanter Teil der Dokumentation: https://www.postgresql.org/docs/current/static/sql-insert.html. Beachten Sie, dass 'VALUES ...' und ** _ query _ ** als Alternativen aufgeführt sind. d. h., Sie können nicht sowohl "VALUES" als auch "SELECT ... FROM" haben. – melpomene

+0

Danke @melpomene, ich werde das zu meiner Antwort hinzufügen. –

Verwandte Themen