Pregunta

Tengo tres tablas denominadas: users, facilities, y staff_facilities.

users contiene el promedio de los datos de usuario, los campos más importantes en mi caso users.id, users.first, y users.last.

facilities también contiene una buena cantidad de datos, pero nada de esto es necesariamente pertinente para este ejemplo, excepto facilities.id.

staff_facilties consta de staff_facilities.id (int,auto_inc,NO NULL),staff_facilities.users_id (int NO NULL), y staff_faciltities.facilities_id (int not NULL).(Que es un bocado!)

staff_facilities las referencias de los identificadores de las otras dos tablas, y estamos llamando a esta tabla para buscar usuarios de las instalaciones y de las instalaciones de los usuarios.

Esta es mi consulta de selección en 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

Esta consulta funciona muy bien en nuestro servidor de desarrollo, pero cuando me deje caer en el cliente del entorno de producción muchas veces las filas en blanco aparecen en el conjunto de resultados.Nuestro servidor de desarrollo es el uso de las tablas replicadas y datos que ya existen en el cliente del servidor de producción, pero el hardware y el software variar un poco.

Estas filas están desprovistos de cualquier información, incluyendo los tres campos de id que requieren NO valores NULOS para ser ingresados en la base de datos.La ejecución de la consulta a través de la administración de MySQL herramientas en el servidor devuelve los mismos resultados.La búsqueda de la tabla de campos NULOS no ha subido nada.

La otra cosa extraña es que el número de filas vacías es cambio basado en la variación de los resultados causados por la cláusula where id de verificación.Es generalmente de alrededor de uno a tres filas vacías, pero son consistentes cuando se utiliza el mismo parámetro.

He muchas veces tratados con el regreso de casi filas duplicadas debido a la IZQUIERDA se UNE, pero nunca he tenido que esto ocurra antes.Tan lejos como la visualización de la información que se va, yo puede ocultar fácilmente desde el usuario final.Mi preocupación es principalmente que este problema se agrava a medida que pasa el tiempo y el número de registros que crece más grande.Como se sienta, este sistema ha sido instalado, y ya tenemos más de 2000 registros en la staff_facilities tabla.

Cualquier idea o dirección se agradece.Me puede proporcionar más ejemplos más detallados y la información.

¿Fue útil?

Solución

Usted es sólo la selección de columnas de la tabla en el lado derecho de la unión.Por supuesto, algunos de ellos son completamente nulos, que hizo un left join.Así que los registros partido a un identificador de la tabla en el lado izquierdo de la combinación, pero no a cualquier dato en el lado derecho de la unión.Puesto que usted no es devolución de las columnas de la izquierda de la tabla, verá que no hay datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top