Foros del Web » Programando para Internet » PHP »

Busqueda en 3 tablas no relacionadas

Estas en el tema de Busqueda en 3 tablas no relacionadas en el foro de PHP en Foros del Web. Dude-- En el primer caso, la consulta al tener una sintaxis correcta, va a devolver cero registros. (No se realmente que devuelve mysql cuando no ...

  #31 (permalink)  
Antiguo 20/04/2009, 12:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Busqueda en 3 tablas no relacionadas

Dude--
En el primer caso, la consulta al tener una sintaxis correcta, va a devolver cero registros. (No se realmente que devuelve mysql cuando no encuentra registros).
Tu asumes que el valor que retorna una consulta cuando no hay registros es null. Sin embargo no se sabe a ciencia cierta que valor devuelve.
Por el contrario, con count(*) sabemos que si devuelve cero, no encontró registros que concuerden con la consulta (Que creo es lo que necesitas) si devuelve uno, quiere decir que ha encontrado registros con esas condiciones que planteas en la consulta.


PD: Ya te funciona bien?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #32 (permalink)  
Antiguo 20/04/2009, 12:50
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: Busqueda en 3 tablas no relacionadas

Cita:
Iniciado por huesos52 Ver Mensaje
Dude--
En el primer caso, la consulta al tener una sintaxis correcta, va a devolver cero registros. (No se realmente que devuelve mysql cuando no encuentra registros).
Tu asumes que el valor que retorna una consulta cuando no hay registros es null. Sin embargo no se sabe a ciencia cierta que valor devuelve.
Por el contrario, con count(*) sabemos que si devuelve cero, no encontró registros que concuerden con la consulta (Que creo es lo que necesitas) si devuelve uno, quiere decir que ha encontrado registros con esas condiciones que planteas en la consulta.


PD: Ya te funciona bien?
Vale, ahora entendí lo que querías decir. Si, ya funciona gracias :).
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #33 (permalink)  
Antiguo 20/04/2009, 15:54
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: Busqueda en 3 tablas no relacionadas

Por cierto una pequeña duda... intenté que no solo devolviera un valor, sino varios y algo debo estar haciendo mal, supongo que es un error de sintaxis:

Código php:
Ver original
  1. SELECT if( (
  2. SELECT count(*)
  3. FROM nivel1
  4. WHERE Email = '[email protected]'
  5. AND DNI = '28823418z'
  6. ) = 0, if( (
  7. SELECT count(*)
  8. FROM nivel2
  9. WHERE Email = '525225'
  10. AND CIF = '252525'
  11. ) = 0, if( (
  12. SELECT count(*)
  13. FROM nivel3
  14. WHERE Email = '525252'
  15. AND CIF = '25252'
  16. ) <> 0, (
  17. SELECT Pass,Telefono
  18. FROM nivel3
  19. WHERE Email = '525252'
  20. AND CIF = '25252'
  21. ), 'los datos introducidos no son correctos' ) ,  (
  22. SELECT Pass,Telefono
  23. FROM nivel2
  24. WHERE Email = '525225'
  25. AND CIF = '252525'
  26. ) ) ,  (
  27. SELECT Pass,Telefono
  28. FROM nivel1
  29. WHERE Email = '[email protected]'
  30. AND DNI = '28823418z'
  31. ) ) AS password, telefono;
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #34 (permalink)  
Antiguo 20/04/2009, 16:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Busqueda en 3 tablas no relacionadas

Estas llamando a telefono como un atributo de una tabla que no pones.

Prueba con la misma consulta pwero abajo terminas con:

Código sql:
Ver original
  1. SELECT (toda la consulta IF) AS password, telefono FROM tabla_ejemplo;

Donde telefono, debe ser un atributo de la tabla tabla_ejemplo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #35 (permalink)  
Antiguo 20/04/2009, 16:43
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: Busqueda en 3 tablas no relacionadas

Perdona, olvidé mencionar que "teléfono" es un campo incluido en las tablas nivel1, nivel2 y nivel3. Así que en teoría no debería ser necesaria la referencia a la tabla ¿no?
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #36 (permalink)  
Antiguo 20/04/2009, 17:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Busqueda en 3 tablas no relacionadas

Si es necesaria dude.
Lo que hacemos en los ifs, simplemente es un juego de datos todos dependientes de si mismos, mas no de otras tablas.
Ademas, la salida del parametro verdadero del if es una sola columna. No es posible sacar dos o mas columnas.

Para solucionar esto, se me ocurren dos cosas:
Repetir una secuencia de ifs similar, para el campo telefono. Pero quedaría una consulta extremadamente larga.

Concatenar en un solo campo el password y el telefono y sacarlo en la misma consulta.

Del codigo cambiaria en:
if(condiciones) <> 0, (select concat(pass," ",telefono) from nivel3 WHERE Email = '525252'
AND CIF = '25252'), etc etc.

te sacaría los resultados esperados, pero tendrías el resultado en un solo campo, lo que puede complicar la manipulación del dato resultante.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #37 (permalink)  
Antiguo 21/04/2009, 09:00
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 5 meses
Puntos: 4
Respuesta: Busqueda en 3 tablas no relacionadas

Me gusta lo de sacar ambos resultados en un solo campo, podría marcarse la separación con algún caracter especial y mediante una función tratar el array que ha devuelto como campo la consulta y dividir así el mismo.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #38 (permalink)  
Antiguo 21/04/2009, 09:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Busqueda en 3 tablas no relacionadas

Me cuentas como te va.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 17:09.