Как следует из названия, я натолкнулся на конкретный случай, или оба описываю его дословно, а затем сообщаю о логике моих таблиц.Пример: мы допускаем, что есть событие, это событие посещено клиентом, и этот клиент может иметь 1 магазин или более магазинов, участвующих в этом событии.Пока ничего странного.На странице событий у меня есть таблица, которая показывает мне полный список событий, заказанных для моих клиентов, и затем, если человек хочет обратиться к странице сведений об этом событии, он может обратиться к магазинам этого клиента, участвующим в этом событии, и ко всемхарактеристики, но мы остаемся на странице, которая показывает мне все события, связанные с клиентом.
Моя проблема заключается в следующем.
- Я создаю клиента
- Я создаю событие
- Я связываю магазины с покупателем для этого события
- Я перехожу на страницу событий
- Я вижу все
- НО, еслиЯ удаляю из таблицы клиентов, клиента, которого я зарегистрировал (пункт 1), вся таблица, связанная с событиями, исчезнет.
Вместо этого мне бы хотелось, чтобы, даже если клиент был отменен, событие, котороеассоциируется с тем, что клиент не исчезает, а только отсутствуют данные о имени и фамилии этого клиента.
Я взял этот тривиальный пример, чтобы сделать cУзнав, в чем заключалась моя проблема, теперь я сообщаю о таблицах и ниже запроса
Имя таблицы клиента: clienti
CREATE TABLE `clienti` (
`cliente_id` int(11) NOT NULL,
`nome` varchar(255) NOT NULL,
`cognome` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`telefono` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Имя таблицы событий: campagne_cliente
CREATE TABLE `campagne_cliente` (
`id_campagna_cliente` int(11) NOT NULL,
`cliente_id_campagna` int(11) NOT NULL,
`impianto_id_campagna` int(11) NOT NULL,
`nome_campagna_cliente` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
где impianto_id_campagna - идентификаторы товаров (магазинов)
Идентификатор и продолжительность названия события стола: campagne
CREATE TABLE `campagne` (
`id_campagna` int(11) NOT NULL,
`data_inizio` date NOT NULL,
`data_fine` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Единственная часть, которую я пропустил, - это магазины (продукты)потому что мне было все равно, чтобы понять в качестве примера, процесс, я уже создал все свои продукты.
Я создаю клиента, и у меня есть информация в таблице клиентов
Я создаюначало и конец события и перейдите к таблице campagne
. Привязать клиента к одному или нескольким продуктам и перейти к таблице campagne_cliente
и показать все с помощью этого запроса:
"SELECT DISTINCT nome_campagna_cliente
, nome
, cognome
, telefono
, email
, cliente_id
, data_inizio
, data_fine
, id_campagna_cliente
FROM clienti
JOIN campagne_cliente
ON campagne_cliente.cliente_id_campagna = clienti.cliente_id
JOIN campagne
ON campagne.id_campagna = campagne_cliente.id_campagna_cliente
GROUP BY campagne.id_campagna"
Теперь у меня есть стандартный случай в таблице campagne_cliente
- id_campagna = id of event
- cliente_id_campagna = id of customer
- impianto_id_campagna = id of products
Практический пример:
- id_campagna = 10
- cliente_id_campagna = 30
- impianto_id_campagna = 42
, если я иду к таблице клиентов и удаляю идентификатор клиента = 42
с запросом, который я написал выше, как мне показать другую информацию, даже если этот клиент с идентификатором 42 больше не существует, спасибо