usando la unión izquierda y donde en otro campo de la tabla unida

Tengo dos tablas de usuarios y work_orders. Ahora necesito obtener resultados de órdenes de trabajo filtrando desde el campo de la tabla de usuarios.

Mi siguiente consulta no devolvió el resultado.

SELECT `work_orders`.`id` as id, `work_orders`.`type` as type
     , `work_orders`.`title` as title, `work_orders`.`status` as status
     , `work_orders`.`publish_date` as publish_date
     , `work_orders`.`priority` as priority, `work_orders`.`assigned_to` as assigned_to
     , `work_orders`.`client_id` as client_id, `work_orders`.`due_date` as due_date 
  FROM (`work_orders`) 
  LEFT JOIN `users` 
    ON `users`.`id` = `work_orders`.`assigned_to` 
 WHERE `work_orders`.`status` != 'closed' 
   AND users.manager_id = '143' 
 ORDER BY `work_orders`.`id` DESC 
 LIMIT 30

preguntado el 12 de junio de 12 a las 22:06

Tómese un tiempo al escribir su pregunta para que sea legible. También puede interesarle investigar los alias de las tablas; por ejemplo, select wo.id from work_orders as wo. No hay necesidad de usar back-ticks en cada columna/tabla; solo donde está usando un nombre reservado. -

elimine la cláusula where y vea qué tipo de resultados obtiene. -

Verificaré a ese Ben la próxima vez -

Obviamente, no hay nada malo con la consulta. Debe comprobar que debe devolver datos. por ejemplo, saque la unión, asegúrese de que encuentre algunas órdenes. Si vuelve a poner la unión, saque la ubicación. Ve desde allí. -

1 Respuestas

¿Su cláusula WHERE está filtrando todos los resultados?

Además, si desea mostrar órdenes de trabajo que solo pertenecen a ciertos usuarios, cambie LEFT JOIN a INNER JOIN o use EXISTS.

Prueba esto ...

SELECT field1, field2, ...
FROM work_orders
WHERE EXISTS (
    SELECT 1 
    FROM users 
    WHERE  users.id = work_orders.assigned_to 
       AND manager_id='143'
)

Respondido el 13 de junio de 12 a las 02:06

hola, work_orders pretian a ciertos usuarios pero nuevamente usuarios vinculados a manager_id que también son usuarios. Ahora necesito filtrar work_orders por manager_id, que es un campo en la tabla de usuarios: Yalamber

Entonces, está tratando de obtener todas las órdenes de trabajo bajo un determinado gerente. ¿Correcto? - m-albert

Sí, eso es lo que estoy tratando de hacer. - Yalamber

@MichaelAlbert En el futuro, use las etiquetas de código (llaves en el editor) o sangre el código 4 espacios para que sea más legible. esquivar mate

@mattedgod - Gracias. Soy nuevo en esto. - m-albert

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.