2017-06-21 1 views
0

Ich muss eine Datenbank mit Testdaten füllen, und meine Datenbank bezieht sich auf die Lieferung. Das ist, was ich versuche zu tun:SQL - Was mache ich falsch mit dieser "In Select einfügen" -Abfrage

Weg
Insert into Orders (OrderCode, OrderDate, Insurance,QuickDelivery, PackageNumber, ClientID, AdressID, DeliveryID, OrderStatusID) 
    Select SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 20), 
      D.OrderDate, 
      FLOOR(RAND()*(1-0)+0), 
      FLOOR(RAND()*(1-0)+0), 
      FLOOR(RAND()*(5-1)+1), 
      FLOOR(RAND()*(200-1)+1), 
      FLOOR(RAND()*(704-505)+505), 
      FLOOR(RAND()*(200-1)+1), 
      FLOOR(RAND()*(9-5)+5) 
    from Deliveries D join 
     Orders O 
     on D.OrderID = O.OrderID 
    where D.OrderDate = FLOOR(RAND()*(200-1)+1) 

Entweder in der Tabelle Lieferungen ich Tonnen von zufällig generierten Beispielen habe, sondern nur die OrderID und ein zufälligen Datum, und ich versuche, einige Daten zur Auswahl diese Tabelle und fügen Sie sie in diese ein, damit die Bestelldaten und Liefertermine übereinstimmen. Wie auch immer, meine Idee war es, eine zufällige ID aus der Tabelle auszuwählen und das Datum des Datensatzes zu übernehmen und int in die Orders-Tabelle einzufügen. Als ich versuchte, eine Variable mit einem beliebigen Datum zu deklarieren und sie in die Parameterliste einzufügen, funktionierte die Abfrage, so dass ich etwas mit diesem Join oder etwas verpassen musste. Es ist für mich erforderlich, mindestens 1000 Datensätze zu haben, das ist ein wirklich langer Prozess, den ich lieber nicht manuell machen würde. Danke im Voraus.

+1

Ich habe keine Ahnung, was Ihre Frage ist. Ihre Abfrage sieht syntaktisch korrekt aus. Offensichtlich haben Sie ein Problem, aber ich kann nicht bestimmen, was es von der Frage ist. –

Antwort

0

Wenn Sie nur randome Daten von Deliveries abholen möchten, dann brauchen Sie Orders in der select Abfrage nicht. Dies sollte ausreichend sein:

Insert into Orders (OrderCode, OrderDate, Insurance,QuickDelivery, PackageNumber, ClientID, AdressID, DeliveryID, OrderStatusID) 
    Select SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 20), 
      D.OrderDate, 
      FLOOR(RAND()*(1-0)+0), 
      FLOOR(RAND()*(1-0)+0), 
      FLOOR(RAND()*(5-1)+1), 
      FLOOR(RAND()*(200-1)+1), 
      FLOOR(RAND()*(704-505)+505), 
      FLOOR(RAND()*(200-1)+1), 
      FLOOR(RAND()*(9-5)+5) 
    from Deliveries D ; 

Sie top (n) zur select Abfrage hinzufügen kann eine bestimmte Anzahl von Zeilen einzufügen (wenn die Zeilen sind vorhanden).

+0

Das hat funktioniert, danke, ich überlegte es zu hart mit Joins, denke ich. – WhatAmIDoing