более быстрый способ вставить комбинацию в таблицу в postgresql - PullRequest
0 голосов
/ 10 мая 2018

Запустил мою базу данных для пробного упражнения в отеле.Нужно вставить номер для каждого check_in, checkout_date.маленький пример, как это, не проблема, но для отеля с 30+ номерами я бы сошел с ума.Как вставить список номеров в интервал, например, дни месяца или даже года?

 booking
id  check_in    check_out    guest_id, room_id
 ----------------------------
1, '05/10/2018', 05/11/2018, null, 101 
2, '05/10/2018', 05/11/2018, null, 102 
3, '05/10/2018', 05/11/2018, null, 103 
4, '05/11/2018', 05/12/2018, null, 101 
5, '05/11/2018', 05/12/2018, null, 102
6, '05/11/2018', 05/12/2018, null, 103 


room
room_id price
----------------------------
 101  $68
 102  $68
 103  $90 

guest
guest_id name
---------------------------
32  tony stark
33  iron man
34  robert downey

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы можете использовать функцию generate_series() для циклического изменения диапазона дат:

insert into booking (check_in, check_out, room_id)
  select
    generate_series('2018-01-01', '2018-12-31', '1 day'::interval)::date,
    generate_series('2018-01-02', '2019-01-01', '1 day'::interval)::date,
    101;

Обратите внимание, что если все ваши проверки выполняются за один день, вам не нужны оба значения check_in * 1006.* и check_out полей в вашей таблице.

Если вы хотите сделать это для всех комнат, вы можете перекрестное соединение на столе комнат:

insert into booking (room_id, check_in, check_out)
  select room_id, check_in, check_in + interval '1 day'
  from room
  cross join generate_series('2018-01-01', '2018-12-31', interval '1 day') as check_in;
0 голосов
/ 10 мая 2018

Эти параметры могут быть не самыми эффективными, но они являются некоторыми способами решения этих проблем.

Опция 1 Создайте пользовательский интерфейс, который позволяет вводить информацию.Я использую PHP и создаю интерфейс с формами, который позволяет мне вводить всю информацию, а затем отправлять ее в мою базу данных.

Пока у вас есть все ваши комнаты и расценки.Вам нужна форма, где вы можете выбрать комнату из выпадающего списка.Вы можете использовать это, чтобы получить комнату и оценить.Затем вы вводите диапазон дат.Затем вы входите в гость.Вы можете взять все это на языке программирования, таком как PHP, и поместить его в свою базу данных, создавая идентификаторы, которые будут правильно соединять все вместе.(В зависимости от опыта может быть легче сказать, чем сделать).

Вариант 2 Поместите данные в электронную таблицу и используйте функции импорта в вашем инструменте управления sql.

Вариант 3 Это я использую для вещей, которые не будут происходить на регулярной основе, одноразовые вставки данных.Используя инструмент электронных таблиц, создайте файл CSV, таким образом, все запятые будут добавлены.Вы можете скопировать и вставить из текстового редактора значения.Затем вы можете найти и заменить, с ',' и добавить символы, где они должны идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...