2017-06-21 13 views
0

テストデータでデータベースを埋める必要があり、データベースが配信に関連しています。これは私がやろうとしているものです:SQL - この「Insert Into Select」クエリで何が間違っているのですか

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) 

いずれかの方法で、私はランダムに生成された例は、単に受注コードとランダム日付のトンを持っている、と私はからいくつかの日付を選択しようとしているテーブルの納入にそのテーブルに挿入して注文の日付と配達日が一致するようにします。いずれにせよ、私の考えは、テーブルからランダムなIDを選んで、そのレコードの日付をとり、intをOrdersテーブルに挿入することでした。私はいくつかのランダムな日付で変数を宣言しようとし、パラメータリストにクエリが働いたので、私はこの結合などで何かを見逃している必要があります。これは少なくとも1000のレコードを持つ必要があります。これは私が手動で行うのではなく、非常に長いプロセスです。前もって感謝します。

+1

私はあなたの質問が何であるか分かりません。あなたのクエリは構文的に正しいと思われます。明らかに問題がありますが、質問から何がわかるのかわかりません。 –

答えて

0

Deliveriesからランダムな日付を取得する場合は、をselectというクエリで使用する必要はありません。これは十分なはずです:あなたは(行が使用可能な場合)の行の特定の番号を挿入するselectクエリにtop (n)を追加することができます

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 ; 

+0

これはうまくいきました、ありがとう、私は私が推測する結合でそれをあまりにも熱心に思っていました。 – WhatAmIDoing

関連する問題