У меня есть три таблицы: users
, facilities
и staff_facilities
.
users
содержит средние данные пользователя, в моем случае наиболее важными полями являются users.id
, users.first
и users.last
.
facilities
также содержит достаточное количество данных, но ни один из них не обязательно относится к этому примеру, за исключением facilities.id
.
staff_facilties
состоит из staff_facilities.id
(int, auto_inc, NOT NULL), staff_facilities.users_id
(int, NOT NULL) и staff_faciltities.facilities_id
(int, NOT NULL). (Это глоток!)
staff_facilities
ссылается на идентификаторы для двух других таблиц, и мы вызываем эту таблицу для поиска пользователей объектов и объектов пользователей.
Это мой запрос на выбор в PHP:
SELECT users.id, users.first, users.last FROM staff_facilities LEFT JOIN users ON staff_facilities.users_id=users.id WHERE staff_facilities.facilties_id=$id ORDER BY users.last
Этот запрос прекрасно работает на нашем сервере разработки, но когда я помещаю его в производственную среду клиента, в результатах часто появляются пустые строки. Наш сервер разработки использует реплицированные таблицы и данные, которые уже существуют на производственном сервере клиента, но аппаратное и программное обеспечение сильно отличается.
Эти строки лишены какой-либо информации, включая три поля id, которые требуют ввода значений NOT NULL в базу данных. Выполнение запроса с помощью инструментов управления MySQL на сервере возвращает те же результаты. Поиск таблицы по пустым полям ничего не дал.
Другая странная вещь заключается в том, что количество пустых строк изменяется в зависимости от разных результатов, вызванных проверкой идентификатора предложения WHERE. Обычно это около одной-трех пустых строк, но они согласуются при использовании одного и того же параметра.
Я много раз имел дело с возвратом почти повторяющихся строк из-за LEFT JOINS, но у меня никогда не было такого раньше. Что касается отображения информации, я могу легко скрыть ее от конечного пользователя. Меня беспокоит, прежде всего, то, что эта проблема будет усугубляться с течением времени, и количество записей будет увеличиваться. На данный момент эта система только что установлена, и у нас уже есть более 2000 записей в таблице staff_facilities
.
Любое понимание или направление будет оценено. Я могу также предоставить более подробные примеры и информацию.