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

Consulta funciona deficientemente

Estas en el tema de Consulta funciona deficientemente en el foro de Mysql en Foros del Web. hola gente tengo la siguiente consulta y tiene un funcionamiento erroneo: en el codigo del php esta esto: Código PHP: $sql  =  "SELECT * FROM trabajadores, prot_emergencia WHERE trabajadores.rut = '"  . $rut ...
  #1 (permalink)  
Antiguo 01/05/2010, 16:04
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Consulta funciona deficientemente

hola gente tengo la siguiente consulta y tiene un funcionamiento erroneo:

en el codigo del php esta esto:

Código PHP:
$sql "SELECT * FROM trabajadores, prot_emergencia WHERE trabajadores.rut = '" .$rut"' || prot_emergencia.rut = '" .$rut"' LIMIT 0,1"
en el phpmyadmin pongo la siguiente consulta

Código PHP:
SELECT FROM trabajadoresprot_emergencia WHERE trabajadores.rut '16732225-0' || prot_emergencia.rut '16732225-0' limit 0,
las consultas son iguales pero tienen resultados diferentes

alguien me puede ayudar?

pd: la idea de la consulta es buscar un RUT en una tabla o en la otra

gracias
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #2 (permalink)  
Antiguo 01/05/2010, 16:46
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: Consulta funciona deficientemente

Cita:
la idea de la consulta es buscar un RUT en una tabla o en la otra
¿Y aparece siempre en las dos al mismo tiempo?
Es decir: El mismo "RUT" (no sé qué es, porque no soy de Chile), ¿debe aparecer forzosamente siempre en una cuando aparece en la otra tabla?
Eso sería bueno, porque puedes afinar muchísimo más la consulta usando un INNER JOIN, en lugar de un JOIN implícito que puede dar resultados erráticos.
__________________
¿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 01/05/2010, 16:59
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: Consulta funciona deficientemente

los RUTS no aparecen en las 2 tablas, solo aparecen en una o en otra, pero nunca en ambas!!!

gracias.
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #4 (permalink)  
Antiguo 01/05/2010, 18:35
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: Consulta funciona deficientemente

Bueno, entonces tienes dos problemas:
1) Si no hay campo que relacione ambas tablas estás creando un producto cartesiano, que es una de las peores situaciones en una consulta, ya que representa un enorme desperdicio de recursos.
2) Si sólo debe devolver los resultados de una sola de las dos tablas, ya que como dices la otra no tendría información relevante, entonces eso no se puede obtener en una consulta simple, sino que es tarea de un stored procedure, donde sí puedes definir la devolución de una un otra tabla.

¿Hay algún campo que relacione a ambas tablas?
__________________
¿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 01/05/2010, 18:51
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: Consulta funciona deficientemente

la tabla trabajadores tiene los siguientes campos:

id
nombres
apellidos
rut
telefono
cargo

la tabla prot_emergencia tiene los siguientes campos

id
nombres
apellidos
rut
fecha
hora
observaciones

las tablas no estan relacionadas, pero es necesario que al momento de chequear un rut la consulta verifique la existencia de tal valor en ambas tablas

buscare informacion respecto a los procedimientos almacenados.

saludos
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #6 (permalink)  
Antiguo 01/05/2010, 20:05
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: Consulta funciona deficientemente

¿Qué información es la que guarda la tabla "prot_emergencia"?
¿Son trabajadores los que figuran en ella?

Creo que lo no está claro aquí es el modelo de datos que se está usando. Entendidendolo mejor, puede que logremos el resultado que buscas.
Por lo que parece, este sistema administra alguna información relacionada con los trabajadores, y obviamente esto implica una tabla donde se guarden los datos de los mismos. Lo que no queda claro es por qué hay una tabla donde los datos de los mismos se repiten, ya que "prot_emergencia" contiene los mismos campos y por tu explicación, estos datos son de trabajadores. Eso implicaría una relación entre la entidad "Trabajador" y la entidad o relación representada por la tabla en cuestión.
Creo que por allí está la clave.
__________________
¿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 02/05/2010, 10:01
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: Consulta funciona deficientemente

la tabla trabajadores guarda informacaion personal de los trabajadores, en cambio la prot_emergencia almacena informacion temporal de personas "no trabajadores", la cual debe durar un periodo de tiempo y luego borrarse
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #8 (permalink)  
Antiguo 02/05/2010, 15:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta funciona deficientemente

Aunque es más profesional, más limpio y probablemente más rápido lo que te propone gnzsoloyo, también puedes utilizar un UNION ALL y luego mediante programación resolver el problema

(SELECT 'trabajadores', id, nombres, apellidos, rut, telefono, cargo, NULL fecha, NULL hora, NULL observaciones FROM trabajadores WHERE rut = variable)
UNION ALL
(SELECT 'prot_emergencia', id, nombres, apellidos, rut, NULL, NULL, fecha, hora, observaciones FROM prot_emergencia WHERE rut = variable)

Luego cuando cargues con programación muestras los datos según el valor del campo primero, que es el nombre de la tabla.

No lo he probado.
  #9 (permalink)  
Antiguo 02/05/2010, 22:34
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: Consulta funciona deficientemente

gracias por la ayuda, la consulta con el UNION ALL funciona son un detalle, cuando busco un rut de la siguiente forma "10345211-2" no me lo busca, pero si lo cambio incluyendo la bd a esta forma "10345211" me funciona perfectamente, no se por que sucede esto. el campo es un VARCHAR(10)

alguien sabe por que pasa esto??

pd: estoy aprendiendo sobre los procedimientos almacenados, me parece que essa es la forma!!!

gracias.

update:

lo he solucionado de la siguiente forma:

Código PHP:
            $rut_inn trim($_POST['rut']);
            
$nro_caract strlen($rut_inn);
            
            
            if(
$nro_caract == 10)
            {
            
                
$rut substr($rut_inn08);
                
            }else{
            
                
$rut substr($rut_inn07);
            } 
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl

Última edición por cadrogui; 02/05/2010 a las 22:55
  #10 (permalink)  
Antiguo 03/05/2010, 00:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta funciona deficientemente

Si es varchar, tienes que usar las comillas.
(SELECT 'trabajadores', id, nombres, apellidos, rut, telefono, cargo, NULL fecha, NULL hora, NULL observaciones FROM trabajadores WHERE rut = 'variable')
UNION ALL
(SELECT 'prot_emergencia', id, nombres, apellidos, rut, NULL, NULL, fecha, hora, observaciones FROM prot_emergencia WHERE rut = 'variable')

Etiquetas: Ninguno
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 00:07.