Estimados, espero se encuentren bien. bueno tengo un evento el cual no puedo solucionar el problema se genera cuando actualizaron el mysql y php de versión 4 a 5 yo utilizaba esta consulta en la versión 4 SELECT A.cod_actividad AS codact, A.nombre AS nomact, AE.cod_actividad AS codact2, AE.cantidad AS cant FROM ACTIVIDAD A LEFT JOIN ACTXEVA AE ON AE.cod_evaluacion = E.cod_evaluacion AND AE.cod_actividad = A.cod_actividad RIGHT JOIN EVALUACION E ON E.cod_evaluacion = AE.cod_evaluacion RIGHT JOIN ACTXPRO AP ON AP.cod_actividad = A.cod_actividad INNER JOIN FUNXPRO FP ON FP.cod_profesion = AP.cod_profesion WHERE FP.rut_funcionario =11111111 AND E.cod_evaluacion =111 ORDER BY A.nombre ASC esto A.cod_actividad AS codact, A.nombre AS nomact me arrojaba el código y el nombre de todas las actividades que fueron asignadas a ese profesional y esto AE.cod_actividad AS codact2, AE.cantidad AS cant la cantidad de actividades efectuadas en dicha evaluación. #1054 - Unknown column 'E.cod_evaluacion' in 'on clause' si ud sabe, enséñeme la diferencia entre hacer esta sentencia en v4 y v5 agradeceré sus ayudas
Lo desmenuce pero no me hace el LEFT JOIN SELECT A.cod_actividad as asas,AEx.cod_actividad asas2 FROM ACTXPRO,FUNXPRO,ACTIVIDAD A LEFT JOIN ACTXEVA AEx ON A.cod_actividad=AEx.cod_actividad WHERE ACTXPRO.cod_profesion=FUNXPRO.cod_profesion AND ACTXPRO.cod_actividad=A.cod_actividad AND FUNXPRO.rut_funcionario=7939792 AND AEx.cod_evaluacion=963 ORDER BY A.nombre ASC help
pero trabajalo con subconsultas, claro si es que te sirve para lo que necesitas o lo otro seria que donde estas haciendo la consulta la realices por partes y despues las unes para que te entrege el resultado que necesitas
y si quitas todos las condiciones? te devuelve algo? anda poniendo las condiciones una x una, para ver cual no te filtra... como consejo: ordena eso de from tabla_1, tabla_2, tabla_3 en mi caso, prefiero utilizar inner join entre las tablas siempre y cuando la ocacion lo amerite
Lo intente hacer pero me sale el mismo error u.u la cosa que quiero saber es el por que no funciona en version 5 si en 4 trabaja BIEN! ejemplo de lo que me tendría que dar como resultado, la primera columna son los códigos asignados al profesional, la segunda fila son los códigos seleccionados por el profesional [TABLE="width: 160"] [TR] [TD="class: xl65, width: 80, align: right"]125[/TD] [TD="class: xl66, width: 80"] 125[/TD] [/TR] [TR] [TD="class: xl65, align: right"]126[/TD] [TD="class: xl66"] 126[/TD] [/TR] [TR] [TD="class: xl65, align: right"]127[/TD] [TD="class: xl66"] null[/TD] [/TR] [TR] [TD="class: xl65, align: right"]128[/TD] [TD="class: xl66"] null[/TD] [/TR] [TR] [TD="class: xl65, align: right"]129[/TD] [TD="class: xl66"] 129[/TD] [/TR] [TR] [TD="class: xl65, align: right"]130[/TD] [TD="class: xl66"] null[/TD] [/TR] [TR] [TD="class: xl65, align: right"]131[/TD] [TD="class: xl66"] null[/TD] [/TR] [TR] [TD="class: xl65, align: right"]132[/TD] [TD="class: xl66"] null[/TD] [/TR] [TR] [TD="class: xl65, align: right"]133[/TD] [TD="class: xl66"] 133[/TD] [/TR] [TR] [TD="class: xl65, align: right"]134[/TD] [TD="class: xl66"] 134[/TD] [/TR] [TR] [TD="class: xl65, align: right"]135[/TD] [TD="class: xl66"] 135[/TD] [/TR] [TR] [TD="class: xl65, align: right"]136[/TD] [TD="class: xl66"] null[/TD] [/TR] [TR] [TD="class: xl65, align: right"]137[/TD] [TD="class: xl66"] 137[/TD] [/TR] [/TABLE] ,,, otra cosa para el de arriba, si le quito las condiciones obviamente me dara el mismo error, si el caso no es el filtro sino las asociaciones INNER JOIN Y LEFT JOIN, no puedo hacerlo solo con INNER JOIN por que no me cargaran con NULL la columna derecha,, cachai? APARTE Yo puedo hacer eso pero programando, eso significa que debo tener 2 consultas 2 foreach 1 función para unirlas, mas espacio en el programa, sera eficaz pero no eficiente.
socio revisando mas a fondo tu consulta yo tuve unos problemas parecidos pero con mssql y el tema es que no te dejan hacer las conexiones (joins) de esa forma ahora a que se deba no lo se, pero dependiendo de en que sistema estes haciendo la consulta podrias condicionarlo directamente en el lenguaje de programacion, no es la idea pero puede resultar, por ejemplo yo tenia una consulta parecida a la tuya y al final tuve que usar union y realizar las consultas de forma independiente y despues unirlas, aunque el resultado de esa forma era por lejos mas lento que con las consultas de forma simple, si quieres puedes subirnos un ejemplo de tu base de datos (con datos ficticios), la subo a mi servidor y pruebo a ver que onda el error, claro si es que quieres y te sirve
1-SELECT A.cod_actividad AS codact, A.nombre AS nomact, AE.cod_actividad AS codact2, AE.cantidad AS cant 2-FROM ACTIVIDAD A 3-LEFT JOIN ACTXEVA AE ON AE.cod_evaluacion = E.cod_evaluacion 4-AND AE.cod_actividad = A.cod_actividad 5-RIGHT JOIN EVALUACION E ON E.cod_evaluacion = AE.cod_evaluacion 6-RIGHT JOIN ACTXPRO AP ON AP.cod_actividad = A.cod_actividad 7-INNER JOIN FUNXPRO FP ON FP.cod_profesion = AP.cod_profesion 8-WHERE FP.rut_funcionario =11111111 9-AND E.cod_evaluacion =111 10-ORDER BY A.nombre ASC Revisando un poco mas...el error -->Unknown column 'E.cod_evaluacion' in 'on clause se produce porque cuando en la "linea 3" consulta por E.cod_evaluacion la union con la tabla "E" aun no ha sido creada (linea 5) recuerda que las condiciones deben ir ordenadas de forma secuencial...segun lo requiera la consulta...no puede llamar a "E" si aun no esta creada. Saludos!
Exacto, la cosa es que si la hago en orden de esta manera: 1-SELECT A.cod_actividad AS codact, A.nombre AS nomact, AE.cod_actividad AS codact2, AE.cantidad AS cant 2-FROM ACTIVIDAD A 3-LEFT JOIN ACTXEVA AE ON A.cod_actividad = AE.cod_actividad 4-LEFT JOIN EVALUACION E ON AE.cod_evaluacion = E.cod_evaluacion 5-LEFT JOIN ACTXPRO AP ON A.cod_actividad = AP.cod_actividad 6-INNER JOIN FUNXPRO FP ON AP.cod_profesion = FP.cod_profesion 7-WHERE FP.rut_funcionario =11111111 8-AND E.cod_evaluacion =111 9-ORDER BY A.nombre ASC NO ME DA EL RESULTADO QUE YO QUIERO
donde trabajo siempre hacemos consultas llamando los datos antes y no hemos tenido problemas, por lo que dudo que sea eso.
es eso cavoso. puede ser solo por la version mysql, pero en fin. tu me pediste la db aquí esta, espero tu respuesta prueba con este 1-SELECT AP.cod_actividad, AE.cod_actividad 2-FROM ACTXPRO AP 3-LEFT JOIN ACTXEVA AE ON AP.cod_actividad = AE.cod_actividad 4-INNER JOIN FUNXPRO FP ON AP.cod_profesion = FP.cod_profesion 5-WHERE FP.rut_funcionario=11111111 6-AND AE.cod_evaluacion=1 me da lo que quiero, pero si agrego la linea 6 ya no me muestra los nulos u-u
la vdd que no entiendo mxo porke kieres limitar la COD_EVALUACION mejor podrias poner que quieres conseguir a traves de la consulta, logre crear la base de datos que subiste y una idea me he hecho, pero no me keda del todo claro) [TABLE="width: 623"] [TR] [TD]ACTXPRO [/TD] [TD][/TD] [TD][/TD] [TD]ACTxEVA[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]cod_profesion[/TD] [TD]cod_actividad[/TD] [TD][/TD] [TD]cod_evaluacion[/TD] [TD]cod_actividad[/TD] [TD]cantidad[/TD] [/TR] [TR] [TD="align: left"]1[/TD] [TD]1[/TD] [TD] [/TD] [TD="align: left"][TABLE] [TR] [TD]1 [/TD] [/TR] [/TABLE] [/TD] [TD]2[/TD] [TD]1[/TD] [/TR] [TR] [TD]1[/TD] [TD]2[/TD] [TD][/TD] [TD]2[/TD] [TD]4[/TD] [TD]1[/TD] [/TR] [TR] [TD]1[/TD] [TD]3[/TD] [TD][/TD] [TD]3[/TD] [TD]6[/TD] [TD]1[/TD] [/TR] [TR] [TD]1[/TD] [TD]4[/TD] [TD][/TD] [TD]4[/TD] [TD]8[/TD] [TD]1[/TD] [/TR] [TR] [TD]1[/TD] [TD]5[/TD] [TD][/TD] [TD]5[/TD] [TD]10[/TD] [TD]1[/TD] [/TR] [TR] [TD]1[/TD] [TD]6[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]7[/TD] [TD][/TD] [TD]FUNXPRO[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]8[/TD] [TD][/TD] [TD]rut_funcionario[/TD] [TD]cod_profesion[/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]9[/TD] [TD][/TD] [TD="align: left"][TABLE] [TR] [TD]1111111[/TD] [/TR] [/TABLE] [/TD] [TD]1[/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]10[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]15[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]16[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]17[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]18[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]19[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]1[/TD] [TD]20[/TD] [TD][/TD] [TD][/TD] [TD][/TD] [TD][/TD] [/TR] [/TABLE] Haciendo tu consulta 1-SELECT AP.cod_actividad, AE.cod_actividad 2-FROM ACTXPRO AP 3-LEFT JOIN ACTXEVA AE ON AP.cod_actividad = AE.cod_actividad 4-INNER JOIN FUNXPRO FP ON AP.cod_profesion = FP.cod_profesion 5-WHERE FP.rut_funcionario=11111111 6-AND AE.cod_evaluacion=1 <-- SIN esta linea retorna LO SIGUIENTE [TABLE="class: ajax pma_table"] [TR] [TH="class: draggable column_heading pointer marker, align: left"] cod_actividad [/TH] [TH="class: draggable column_heading pointer marker, align: left"] cod_actividad [/TH] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]1[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]2[/TD] [TD="class: data grid_edit nowrap, align: right"]2[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]3[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]4[/TD] [TD="class: data grid_edit nowrap, align: right"]4[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]5[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]6[/TD] [TD="class: data grid_edit nowrap, align: right"]6[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]7[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]8[/TD] [TD="class: data grid_edit nowrap, align: right"]8[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]9[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]10[/TD] [TD="class: data grid_edit nowrap, align: right"]10[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]15[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]16[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]17[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]18[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]19[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]20[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [/TABLE] QUE AL PARECER ES LO KE BUSCAS PERO...AL LIMITARLO EN EL WHERE COD_EVALUACION=1, lo condicionas a que te muestre un solo resultado, x eso te quita todo lo demas y los NULL...Pero si lo consicionas en la relacion, te mostrara el "conjunto" con tu condicion ------------------------------ SELECT AP.cod_actividad,AE.cod_actividad, AE.cod_evaluacion, AE.cantidad FROM ACTXPRO AP LEFT OUTER JOIN ACTXEVA AE ON AE.cod_actividad = AP.cod_actividad AND (AE.cod_evaluacion=1 OR AE.cod_evaluacion IS NULL) INNER JOIN FUNXPRO FP ON FP.cod_profesion = AP.cod_profesion WHERE FP.rut_funcionario=11111111 ORDER BY AP.cod_actividad; lo que esta con naranjo lo puedes manejar con una variable entrante Consigues lo stge al limitarla con cod_evaluacion = 1: [TABLE="class: ajax pma_table"] [TR] [TH="class: draggable column_heading pointer marker"] cod_actividad [/TH] [TH="class: draggable column_heading pointer marker"] cod_actividad [/TH] [TH="class: draggable column_heading pointer marker"] cod_evaluacion [/TH] [TH="class: draggable column_heading pointer marker"] cantidad [/TH] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]1[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]2[/TD] [TD="class: data grid_edit nowrap, align: right"]2[/TD] [TD="class: data grid_edit nowrap, align: right"]1[/TD] [TD="class: data grid_edit nowrap, align: right"]1[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]3[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]4[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]5[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]6[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]7[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]8[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]9[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]10[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]15[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]16[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]17[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]18[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: odd"] [TD="class: data grid_edit not_null nowrap, align: right"]19[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [TR="class: even"] [TD="class: data grid_edit not_null nowrap, align: right"]20[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [TD="class: data grid_edit null, align: right"]NULL[/TD] [/TR] [/TABLE] o simplemente: SELECT AP.cod_profesion,AP.cod_actividad, AE.cod_actividad FROM ACTXPRO AP INNER JOIN FUNXPRO FP ON AP.cod_profesion = FP.cod_profesion LEFT JOIN ACTXEVA AE ON AP.cod_actividad = AE.cod_actividad AND AE.cod_evaluacion=1 WHERE FP.rut_funcionario=11111111; ESPERO QUE TE HAYA PODIDO AYUDAR EN ALGO... igual verifica bien si sirve y prueba con muchos mas datos, para que estes seguro de que te servira si necesitas resolver mas dudas, intenta subir mas datos para las tablas que estas trabajando para poder probar con mejores ejemplos... pd.disculpa las mayusculas pero nitaba que se destacara.