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

Consulta simultánea en dos tablas no va en php

Estas en el tema de Consulta simultánea en dos tablas no va en php en el foro de Bases de Datos General en Foros del Web. Hola, Estoy probando de muchísimas maneras a buscar al mismo tiempo en dos tablas, pero no hay forma. Mi versión del sql es 4.1.22 y ...
  #1 (permalink)  
Antiguo 23/09/2008, 05:07
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años, 7 meses
Puntos: 0
Consulta simultánea en dos tablas no va en php

Hola,

Estoy probando de muchísimas maneras a buscar al mismo tiempo en dos tablas, pero no hay forma. Mi versión del sql es 4.1.22 y la instrucción que uso es:

$resultado=mysql_query("select * from tabla1, tabla 2 Where publicable='SI' ORDER BY fecha ASC limit 0,20",$link);

¿Qué puede estar fallando?

Por otro lado, una vez sale el contenido... (si es que llego a lograrlo, que ya lo dudo) ¿puedo saber de alguna manera el nombre de la tabla de la que lo saca? (que lo imprima en pantalla o algo)
  #2 (permalink)  
Antiguo 23/09/2008, 06:25
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta simultánea en dos tablas no va en php

Podrías poner la definición de las dos tablas y qué es lo que intentas sacar?
  #3 (permalink)  
Antiguo 23/09/2008, 07:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta simultánea en dos tablas no va en php

Si seleccionas campos del mismo tipo en las 2 tablas puedes utilizar UNION:
Código:
select campo1, campo2, "nombre_tabla1" as tabla
from nombre_tabla1
where ...

UNION


select campo1, campo2, "nombre_tabla2" as tabla
from nombre_tabla2
where ...
En tabla tienes la tabla de la que viene el resultado.

Salu2
  #4 (permalink)  
Antiguo 23/09/2008, 07:16
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Consulta simultánea en dos tablas no va en php

La verdad es que siempre he utilizado el * para elegir toda la tabla (buscando en una sola funciona) ¿no sirve para ambas?

Última edición por JBRS; 23/09/2008 a las 07:20 Razón: Corrección asterisco
  #5 (permalink)  
Antiguo 23/09/2008, 07:54
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta simultánea en dos tablas no va en php

si ambas tablas tienen el mismo numero de campos y del mismo tipo, si funciona.
Si quieres filtrar sobre las dos tablas:

Código:
select * from (
select .....
UNION 
selct ....
) f
where f.nombre_campo_a_filtrar = xxxxx
Salu2
  #6 (permalink)  
Antiguo 23/09/2008, 08:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta simultánea en dos tablas no va en php

Cuidado, Las versión 4 de MySQL no soportaba subconsultas. Puede que esta última no funcione.
Lo primero que deberías hacer es comprobar con otro front-end si la consulta en sí con datos reales está funcionando tal y como la escribes, antes de ver si el problema está en SQL o en PHP...

Otro tip: SELECT * es la forma más ineficiente y falta de optimización de todas las consultas, y solamente debe invocarse si realmente necesitas todos los datos. En caso contrario estás trayendo mucha basura por la web, y la basura ocupa espacio (bytes) en los enlaces... Es decir, pérdida de performance en forma creciente.
__________________
¿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 23/09/2008, 10:37
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Consulta simultánea en dos tablas no va en php

Mmm y si las tablas no son iguales, ¿cómo pido unos campos de una y otros campos de otra?
  #8 (permalink)  
Antiguo 23/09/2008, 11:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta simultánea en dos tablas no va en php

Es básico:
Si quieres relacionar dos tablas deben forzosamente tener un campo al menos que las relacione. El JOIN (o al coma según el manual de MySQL) funciona de esa forma: Usa los campos del mismo nombre como pivote y relaciona los registrs de una y otra tabla igualando los contenido del/los campo/s usados para relacionar.
La cosa tiene algunas consideraciones
1. Los campos deben forzosamente tener el mismo nombre o de lo contrario hay que usar la cláusula ON como en "ON campotabla1 = campotabla2".
2. Los campos deben forzosamente contener datos relacionados y del mismo tipo.
3. Si no existen puntos relacionados entre los registros de una y otra tabla, puede el uso de JOIN o la coma sin ON puede producir el efecto del NATURAL JOIN, esto es, el producto cartesiano (todos con todos), lo que es la peor forma de resolver una consulta.

El uso del UNION tiene, por su parte dos condiciones básicas:
1. La cantidad de campos debe ser igual en cada SELECT unido. Esto significa que la cantidad de columnas devuelta por cada uno debe ser la misma.
2. Es necesario que lso campos sean del mismo tipo en las mismas ubicaciones, o sino el resultado puede ser absolutamente inconsistente (como el famos y viejo dicho de "caballos con manzanas", terminarías uniendo campos DATETIME con campos SMALLINT, por ejemplo).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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:00.