Я генерирую тестовые данные для новой базы данных, и у меня возникают проблемы с заполнением одного из полей внешнего ключа. Мне нужно создать относительно большое количество (1000) записей в таблице (SurveyResponses
), который имеет внешний ключ к таблице с только 6 записей (Surveys
)Случайное заполнение внешнего ключа в наборе выборки данных
база данных уже имеет Schools
таблицу, которая имеет несколько тысяч записей. Для аргументов ради позволяет сказать, что это выглядит как этот
Schools
+----+-------------+
| Id | School Name |
+----+-------------+
| 1 | PS 1 |
| 2 | PS 2 |
| 3 | PS 3 |
| 4 | PS 4 |
| 5 | PS 5 |
+----+-------------+
я создаю новую Survey
таблицу. Он будет иметь только около 3 рядов.
Survey
+----+-------------+
| Id | Col2 |
+----+-------------+
| 1 | 2014 Survey |
| 2 | 2015 Survey |
| 3 | 2016 Survey |
+----+-------------+
SurveyResponses
просто связывает школу с опросом.
Survey Responses
+----+----------+----------+
| Id | SchoolId | SurveyId |
+----+----------+----------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 1 |
| 4 | 4 | 3 |
| 5 | 5 | 2 |
+----+----------+----------+
Наполнение SurveyId
поля является то, что дает мне больше всего хлопот. Я могу случайным образом выбрать 1000 школ, но я не понял способ генерации 1000 случайных SurveyIds. Я пытался избежать цикла while, но, возможно, это единственный вариант?
Я использую генератор данных SQL Red Gate для генерации некоторых моих тестовых данных, но в этом случае мне бы очень хотелось понять, как это можно сделать с помощью raw SQL.
Я пробовал это, но все опросы были одинаковыми в результате – pnewhook
@pnewhook. , , Это довольно странно. Я предлагаю другое решение, которое я считаю гораздо менее изящным. –
@GordonLinoff У меня очень похожий вопрос и я не хочу публиковать новый вопрос. Q) Из двух таблиц с PK, отношениями FK **, как я могу просто выбрать верхнюю пятерку из справочной таблицы BedSizeTable и заполнить король/королева/отдельный текст во вторичном «HotelRoomsTable»? ** Я бы хотел превратите это в proc proc, если это возможно. – aggie