Если я правильно понимаю это. Вам нужно создать две новые таблицы;
PhoneNumbers
phone_id int auto-increment - Will hold the phone numbers unique Id
telephone varchar(30) - Will hold the phone number itself
Hotel_PhoneNumbers
hotel_id int - The id of the hotel
phone_id int - The id of the phone number
Вам нужно будет создать скрипт, чтобы вытащить все отели из вашей базы данных, проходной каждый отель и взрываются полем номера телефона в массив. Затем вы хотите пройти через телефонный массив и добавить номер телефона в новую таблицу PhoneNumbers, проверяя, что он еще не существует. Если он уже существует, вам необходимо захватить идентификатор PhoneNumbers.
Затем, используя новую таблицу Hotel_PhoneNumbers, создайте новую строку, содержащую идентификатор PhoneNumber и идентификатор отеля. Это свяжет номер телефона (ы) с отелем.
Таким образом, таблица PhoneNumbers будет содержать только уникальные номера телефонов, но может быть связана с несколькими отелями.
Я не могу конкретно указать вам код, чтобы сделать это, поскольку я не знаю, как вы общаетесь с вашей базой данных. Я использую Laravel и Eloquent, поэтому он может выглядеть примерно так:
$hotels = Hotel::all();
foreach ($hotels as $hotel) {
$numbers = explode(',' $hotel->phone);
if (count($numbers) > 0) {
foreach ($numbers as $number) {
// See if the PhoneNumber already exists in the database
$phoneNumber = PhoneNumber::where('telephone', $number);
// If the phone number doesn't exist, we need to add the number to the database
if (is_null($phoneNumber)) {
// Create a new phone number
$phoneNumber = new PhoneNumber();
$phoneNumber->telephone = $number;
$phoneNumber->save();
}
// Check if the hotel is already linked to the phone number in the database
$hotelPhoneNumber = HotelPhoneNumber::where('hotel_id', $hotel->id)->where('phone_id', $phoneNumber->id);
// If the hotel isn't linked to the number, create the link
if (is_null($hotelPhoneNumber)) {
$hotelPhoneNumber = new HotelPhoneNumber();
$hotelPhoneNumber->hotel_id = $hotel->id;
$hotelPhoneNumber->phone_id = $phoneNumber->id;
$hotelPhoneNumber->save();
}
}
}
}
Это очень общий вопрос с слишком небольшим количеством деталей, чтобы дать хороший ответ или потратить время на создание хорошего ответа. Пожалуйста, добавьте более подробную информацию, например, о некоторых табличных конструкциях, которые у вас есть или попробовали. SQL, который вы используете в настоящее время. – pcnate