Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema al consultar con una base datos en MySql

Estas en el tema de Problema al consultar con una base datos en MySql en el foro de Mysql en Foros del Web. hola compañeros, tengo un problema al generar una consulta con MySql tengo varias tablas por ejemplo, emp fijo, contrat, supl y obreros fijos cont supl ...
  #1 (permalink)  
Antiguo 03/07/2008, 07:46
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema al consultar con una base datos en MySql

hola compañeros, tengo un problema al generar una consulta con MySql tengo varias tablas por ejemplo, emp fijo, contrat, supl y obreros fijos cont supl todas estas tablas mencionadas contienen los mismo campos CED, NOMB, APEL, etc el detalle es que me da un error al generar la consulta y no se como hacer gracias de antemano por la ayuda aqui esta el codigo

Código PHP:
$query "select * from empleado_fijo where CED='$CED'"
asi si me funcona pero de esta manera me genera un error

Código PHP:
$query "select * from empleado_fijo, empleado_contratado where CED='$CED'"
Error en query select * from empleado_fijo, empleado_contratado where CED='3811893':Column 'CED' in where clause is ambiguous
  #2 (permalink)  
Antiguo 03/07/2008, 07:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

El campo CED existe en las dos tablas (EMPLEADO_FIJO y EMPLEADO_CONTRATADO) y MySQL no sabe de cuál sacar el dato, por eso dice que es ambiguo.
El problema es que el JOIN que estás haciendo con la coma encadena en un registro todos los campos de una y otra tabla, sin discriminar cuales ya están y cuales no.
Para que el JOIN funcione bien tienes que usar USING(campos comunes) si los campos de igual contenido tienen el mismo nombre en las dos tablas, u ON campotabla1 = campotabla2, si tienen diferentes nombres.
Si hay más de un campo común la sintaxis debe ser: En el USING() se listan separados por comas dentro del paréntesis y en el otro caso ON x1 = x2 AND x3 = x4, ..., etc.
de no querer usar ninguna de las dos formas, debes indicar de qué tabla tomarlo:
- EMPLEADO_CONTRATADO.CED
- EMPLEADO_FIJO.CED
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/07/2008, 08:12
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

cuando lo hago asi como me dices de colocar el .CED me sale el siguiente error:

Error en query select * from empleado_fijo.CED, empleado_contratado.CED, obrero_fijo_2008.CED where CED='3139573':Table 'empleado_fijo.ced' doesn't exist

otra cosa no entendi muy bien como seria la sintaxis del using no habia escuchado de el podrias darme un ejemplo para guiarme xq a pesar de q entendi tu explicación no se como usarlo
  #4 (permalink)  
Antiguo 03/07/2008, 09:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Después del FROM van los nombres de las tablas, no de los campos. Supuse que sabías que lo de poner el nombre de la tabla era para indicar en el momento de considerar el valor del campo:
Código:
SELECT * 
FROM empleado_fijo, empleado_contratado 
WHERE EMPLEADO_CONTRATADO.CED = variable;
No te pongo código PHP porque esta sección es de Bases de Datos, y no se debe poner código de programación. Es una regla del foro.

Respecto al USING, lee con atención el Manual de Referencia: 13.2.7.1. Sintaxis de JOIN. Y si aún tienes dudas, preguntame de nuevo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/07/2008, 10:01
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

La consulta que estoy haciendo es la siguiente

select * from empleado_fijo, empleado_contratado, empleado_suplente, obrero_contratado, obrero_fijo_2008, obrero_suplente where empleado_fijo.CED, empleado_contratado.CED, empleado_suplente.CED, obrero_contratado.CED, obrero_fijo_2008.CED, obrero_suplente.CED ="VARIABLE"

tal como me indicastes pero el detalle es que me sigue arrojando un error y en cuanto al using sigo teniendo dudas no lo veo claro

gracias de antemano por tu atencion
  #6 (permalink)  
Antiguo 03/07/2008, 12:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED)
INNER JOIN empleado_suplente USING(CED) 
INNER JOIN obrero_contratado USING(CED) 
INNER JOIN obrero_fijo_2008 USING(CED) 
INNER JOIN obrero_suplente USING(CED)
WHERE CED = variableEntrada;
según la sintaxis que tú pusiste debería ser:
Código:
SELECT  * 
FROM empleado_fijo, empleado_contratado, empleado_suplente, obrero_contratado, obrero_fijo_2008, obrero_suplente 
WHERE 
    empleado_fijo.CED = variableEntrada
    AND empleado_contratado.CED = variableEntrada
    AND empleado_suplente.CED = variableEntrada
    AND obrero_contratado.CED  = variableEntrada
    AND obrero_fijo_2008.CED =variableEntrada
    AND obrero_suplente.CED =variableEntrada;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 03/07/2008, 14:26
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

hice la consulta de las dos maneras q me dijiste y a pesar de q no me da ningun error ni nada no me trae los resultados de la consulta
  #8 (permalink)  
Antiguo 03/07/2008, 21:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Prueba la cosa por partes, ya que al menos uno de los INNER JOIN está devolviendo vacío porque no hay valores coincidentes:

Primero:
Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED)
WHERE CED = variableEntrada;
Luego:
Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED)
INNER JOIN empleado_suplente USING(CED) 
WHERE CED = variableEntrada;
Después:
Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED)
INNER JOIN empleado_suplente USING(CED) 
INNER JOIN obrero_contratado USING(CED) 
WHERE CED = variableEntrada;
y para terminar:
Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED)
INNER JOIN empleado_suplente USING(CED) 
INNER JOIN obrero_contratado USING(CED) 
INNER JOIN obrero_fijo_2008 USING(CED) 
WHERE CED = variableEntrada;
Y
Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED)
INNER JOIN empleado_suplente USING(CED) 
INNER JOIN obrero_contratado USING(CED) 
INNER JOIN obrero_fijo_2008 USING(CED) 
INNER JOIN obrero_suplente USING(CED)
WHERE CED = variableEntrada;
En uno de los pasos al menos debería devolver registros. Si no lo hace es porque no existen en ese campo valores en común entre las tablas. No existe otra posibilidad.
INNER JOIN iguala los campos del mismo nombre y los matchea según el valor. Cuando un registro en cada tabla coincide en valor con la otra, ese registro es devuelto. Al hacer INNER JOIN encadenados de esa forma, solamente si el campo en cuestión tiene el mismo valor en TODAS las tablas, será devuelto el registro combinado, sino NO.
No falla. Si no devuelve nada, insisto, es porque no existe una combinación en ese campo con TODAS las tablas.
El hecho de que no te devuelva un error me está diciendo que el INNER JOIN está funcionando, lo que no hay es valores coincidentes, o no existe el valor que estás mandando en la variable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 07/07/2008, 07:54
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

Apenas con el primer inner join no me arroja nada revise la estructura de la tabla y todos los campos CED de las tablas estan de la siguiente manera

Campo Tipo Cotejamiento Atributos Nulo Predeterminado Extra Acción

CED varchar(50) latin1_swedish_ci Sí NULL
  #10 (permalink)  
Antiguo 07/07/2008, 08:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Si ya desde el primer intento no te devuelve datos, significa simplemente que entre EMPLEADO_FIJO y EMPLEADO_CONTRATADO no hay registros que coincidan en el valor de CED y que al mismo tiempo valga el valor de entrada de la variable.
¿Probaste con:
Código:
SELECT * 
FROM empleado_fijo INNER JOIN empleado_contratado USING(CED);
Otra cosa es que si quieres que un JOIN te devuelva algo, el campo de relación no puede ser NULL jamás, a menos que estés buscando los registros con CED en NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 07/07/2008, 09:13
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

El problema es q tengo registros en CED en los cuales el campo esta vacio por eso lo tuve q poner en NULL, otra cosa no se si entendi mal pero tiene q habar a juro un registro igual en todas las tablas es decir en todos una CED 54444 por ejemplo, y haciendo la consulta como me dices me trae un registro q no es el q introduzco en el formulario anterior
  #12 (permalink)  
Antiguo 07/07/2008, 09:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

El ejemplo que te di (SELECT * FROM empleado_fijo INNER JOIN empleado_contratado USING(CED);) era para que comprobaras si existía alguna coincidencia a algún nivel de algún registro entre ambas tablas.
Infiero por lo que me dices que lo probaste y te devolvió al menos un (1) registro. Pues bien, ese registro es el único que existe donde ambas tablas coinciden. Nunca tendrás otro a menos que algún dato en los demás registros se iguale.
Entonces, el problema es de diseño: La confección de las tablas y su carga no responde eficientemente a la idea inicial del sistema. Para avanzar en este punto hay que analizar mejor el modelo del sistema y de los datos.
¿Podrías explicarme mejor Qué es lo que hace el sistema, qué datos ingresan, qué se almacena y qué tipo de reporte estás tratando de construir?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 07/07/2008, 10:31
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

ok una pregunta a q te refieres con lo q dices de q los registros de las tablas se igualen

ok se supone que yo acceso a un pagina en donde ingreso mi cedula llamada CED en la BD y en mis 6 tablas me debe buscar el registro q escribi en el formulario, el detalle es que tengo varios registros null debido a defectos en la base de datos q deben ser arregladas por otro personal una vez q el usuario ve sus datos tiene la posibilidad de modificarlos y luego imprimir sus datos por ahi va el asunto
  #14 (permalink)  
Antiguo 07/07/2008, 11:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Exacto.
El tema es que el resto de las tablas, según entiendo, dependerían de ese registro inicial, y solamente podrías obtener datos de las restantes tablas en la medida que el campo clave vaya siendo ingresado en registros de esas tablas. Hasta tanto las restantes tablas no sean llenadas con datos válidos, la consulta total jamás te devolverá datos relacionados simplemente porque todavía no existen.
La cosa sería que:
1. Se ingresan los datos en la tabla primaria.
2. Se consulta a las tablas secundarias si esos datos existen. Si existen se pueden actualizar, sino se pueden ingresar. En la verificación, si un JOIN binario (entre dos tablas) devuelve nulo, es porque no hay registro y se debe ingresar.
3. deberías programar en la aplicación un conjunto de selects contra la tabla primaria para verificar cuáles de las secundarias tienen datos coincidentes y según cuales los tengan poder hacer una consulta con JOIN que realmente te pueda devolver datos.

¿Ya estoy más cerca?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 07/07/2008, 12:20
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

Gracias por tu interes pero todas las tablas ya tienen datos tengo un promedio de 50000 registros por tabla lo unico q es cierto es q tengo valores null en el campo ced pero yo no tengo que llenar las tablas puesto q ya contienen la información
  #16 (permalink)  
Antiguo 07/07/2008, 15:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Entonces, si los campos de nombres y/u otros datos que deberían coincidir, coinciden perfectamente, pero el campo CED no, existe inconsistencia de datos... (campos de igual tipo y valor con estados diferentes).
Si y sólo si registros que deberían coincidir no se pueden relacionar con un múltiple JOIN sobre CED, será mejor que vayas diseñando algún modo de corregir la información.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 07/07/2008, 21:42
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

disculpa q dude pero estas 100% seguro de q es por eso quieres decir q si quito los campos q no tienen nada si me muestra la consulta?
  #18 (permalink)  
Antiguo 08/07/2008, 10:05
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

olvida lo del mensaje anterior una pregunta me dio por hacer la consulta q me dijiste directamente en la base de datos y en la explicación de mysql me arrojo este resultado me prodrias explicar????

Código:
id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
1 SIMPLE empleado_fijo ref CED CED 53 const 1 Using where 
1 SIMPLE empleado_contratado ref CED CED 53 const 1 Using where 
1 SIMPLE empleado_suplente ref CED CED 53 const 1 Using where 
1 SIMPLE obrero_contratado ref CED CED 53 const 1 Using where 
1 SIMPLE obrero_suplente ref CED CED 53 const 1 Using where 
1 SIMPLE obrero_fijo_2008 ALL NULL NULL NULL NULL 56200 Using where
y este fue como hice la consulta

Código:
SELECT * 
FROM empleado_fijo
INNER JOIN empleado_contratado
USING ( CED ) 
INNER JOIN empleado_suplente
USING ( CED ) 
INNER JOIN obrero_contratado
USING ( CED ) 
INNER JOIN obrero_fijo_2008
USING ( CED ) 
INNER JOIN obrero_suplente
USING ( CED ) 
WHERE CED = "3139573"
LIMIT 0 , 30;
  #19 (permalink)  
Antiguo 08/07/2008, 10:07
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

olvida lo del mensaje anterior una pregunta me dio por hacer la consulta q me dijiste directamente en la base de datos y en la explicación de mysql me arrojo este resultado me prodrias explicar????

Código:
id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
1 SIMPLE empleado_fijo ref CED CED 53 const 1 Using where 
1 SIMPLE empleado_contratado ref CED CED 53 const 1 Using where 
1 SIMPLE empleado_suplente ref CED CED 53 const 1 Using where 
1 SIMPLE obrero_contratado ref CED CED 53 const 1 Using where 
1 SIMPLE obrero_suplente ref CED CED 53 const 1 Using where 
1 SIMPLE obrero_fijo_2008 ALL NULL NULL NULL NULL 56200 Using where
y este fue como hice la consulta

Código:
SELECT * 
FROM empleado_fijo
INNER JOIN empleado_contratado
USING ( CED ) 
INNER JOIN empleado_suplente
USING ( CED ) 
INNER JOIN obrero_contratado
USING ( CED ) 
INNER JOIN obrero_fijo_2008
USING ( CED ) 
INNER JOIN obrero_suplente
USING ( CED ) 
WHERE CED = "3139573"
LIMIT 0 , 30;
  #20 (permalink)  
Antiguo 09/07/2008, 19:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

En realidad, lo que devuelve el EXPLAIN es bastante simple:
id: ID de referncia del pinto de inicio en la consulta: 1.
select_type : Tipo de Select realizado. SIMPLE (una tabla con otra en forma directa).
table: Nombre de la tabla usada.
type: Tipo de tabla. REF (referenciada) es una tabla de existencia real.
possible_keys: Claves posibles para definir índices, según el resultado obtenido. En este caso sugiere construir un índice sobre CED.
key: Campo usado como clave o clave de índice usado en el proceso: CED.
key_len: Longitud de la clave usada en bytes. la mayor o menor longitud afecta la eficiencia de la consulta.
ref : A qué tabla se referencia: 1.
rows: Catidad de registros devueltos o procesados en la consulta.
Extra: Info extra. En este caso indica cuál es la cláusula determinante.

Respecto al resultado devuelto, presta mucha atención a la última línea:
Cita:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE empleado_fijo ref CED CED 53 const 1 Using where
1 SIMPLE empleado_contratado ref CED CED 53 const 1 Using where
1 SIMPLE empleado_suplente ref CED CED 53 const 1 Using where
1 SIMPLE obrero_contratado ref CED CED 53 const 1 Using where
1 SIMPLE obrero_suplente ref CED CED 53 const 1 Using where
1 SIMPLE obrero_fijo_2008 ALL NULL NULL NULL NULL 56200 Using where
.
Eso está diciendo que:
1. no pudo discriminar por ningún índice el contenido de la tabla obrero_fijo_2008, por lo que debió usarla barriendola completamente (ALL). Algo muy ineficiente.
2. El punto de referencia entre las tablas dio resultados nulos. No encontró ningún dato o el dato estaba en NULL. Ineficiente.
3. No pudo determinar claves porque el campo de referencia terminó en NULL.
4. Como consecuencia de lo anterior la longitud de la posible clave también es nulo.

En definitiva: En la consulta tal y como la has hecho, no hay en la tabla obrero_fijo_2008 ningún registro que tenga en DEC el número 3139573, por lo cual la consulta no devuelve nada.
Esto dice dos cosas:
1. No se registró ningún obrero fijo en este año con ese CED.
2. El obrero existe, pero el campo está nulo.

Si no eres tu quien debe verificar los datos entrantes, entonces hay que comunicarle a los programadores de la aplicación que ingresa los datos que ese datos es MANDATORIO y no debe jamás quedar nulo, porque de lo contrario genera problemas en los reportes.
Respecto a qué puedes hacer, te sugeriría hacer una verificación de la estructura de los datos entre todas las tablas, para ver si existe alguna combinación de campos que puedas usar como clave alternativa y que te sirva para realizar un UPDATE a los datos faltantes, de modo de corregir esa inconsistencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #21 (permalink)  
Antiguo 10/07/2008, 09:25
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

Entendi eso gnzsoloyo, gracias por la ayuda. Ya corregi la estructura de las tablas quite los registros que tenian CED como null y estableci el mismo campo en NOT NULL para las todas las tablas que contienen el a pesar de eso me sigue el mismo problema

Código:
id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
1 SIMPLE empleado_fijo ref CED CED 52 const 1 Using where 
1 SIMPLE empleado_contratado ref CED CED 52 const 1 Using where 
1 SIMPLE empleado_suplente ref CED CED 52 const 1 Using where 
1 SIMPLE obrero_contratado ref CED CED 52 const 1 Using where 
1 SIMPLE obrero_suplente ref CED CED 52 const 1 Using where 
1 SIMPLE obrero_fijo_2008 ALL NULL NULL NULL NULL 56143 Using where
sigo sin entender xq pasa eso, y por otra parte el registro si existe xq yo mismo lo seleccione al azar para hacer el query y bueno puse la CED como not null como te menciones anteriorment y sigue pasando lo mismo
  #22 (permalink)  
Antiguo 10/07/2008, 09:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al consultar con una base datos en MySql

Porque el dato de la tabla obrero_fijo_2008 sigue siendo el mismo.
Sigue sin existir un registro que tenga CED igual a 56143. Mientras ese registro no tenga el CED con un valor coincidente, seguirá dando nulo. ¿Contra qué registro puede hacer una igualación?
El tema es que si los declaras NOT NULL, pero la tabla tiene datos, y el campo está en NULL, MySQL simplemente te devolverá un error de "Data truncated for column 'columna' at row nroRow", pero no podrá modificar la tabla, con lo que el problema persiste.
Antes de modificar una tabla en esas condiciones hay que hacer una verificación de los datso para completarlos. A eso me refería en el último post.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #23 (permalink)  
Antiguo 10/07/2008, 12:52
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema al consultar con una base datos en MySql

Gracias por responder y por la ayuda. Hice unos cambios en las tablas estableciendo las CED como claves primarias (no me habia dado cuenta de eso) y ahora en la explicación del sql me sale lo siguiente

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table...

una pregunta a juro todos los campos tienen q estar not null???
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.