Foros del Web » Programando para Internet » PHP »

Ayuda con consulta a base de datos

Estas en el tema de Ayuda con consulta a base de datos en el foro de PHP en Foros del Web. Buenas tardes, Tengo dos tablas con esta estructura: Tabla 1: IDTabla1(Primary Key) (numérica y autoincrementable) Campo2 Tabla 2: Campo1 Campo2 Campo3 IDTabla1(Foreign Key) (muchos registros ...
  #1 (permalink)  
Antiguo 18/10/2008, 08:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 15 años, 8 meses
Puntos: 1
Ayuda con consulta a base de datos

Buenas tardes,

Tengo dos tablas con esta estructura:
Tabla 1:
IDTabla1(Primary Key) (numérica y autoincrementable)
Campo2


Tabla 2:
Campo1
Campo2
Campo3
IDTabla1(Foreign Key)
(muchos registros de la tabla 2 pueden compartir mismo campo foreing key)

Pues bien, lo que estoy intentando hacer, es una consulta por medio de un dato que recoge un formulario, que busca en el campo 1 de la tabla2, y quiero que me devuelva ese dato, y por medio de la clave foránea, los datos de la tabla1 relacionados, y además (que es lo que no consigo), que devuelva todos los registros de la tabla2 que compartan la misma clave foránea.

He estado probando de todo, y creía que es así pero no me sale... Mi consulta ahora es así:
select * from tabla2
INNER JOIN tabla1
ON tabla2.idtabla1=tabla1.idtabla1
where campo1 like '%".$busqueda."%'"

Pues eso, creía que estaba bien hecha pero no... porque al imprimir los resultados, sólo me sale el registro coincidente de la tabla2, y el relacionado de la tabla1.

Alguien sabe como hacer que busque también todos los datos de la tabla2 que compartan la misma clave foránea que el registro que busque en el formulario?

Gracias y un saludo.
  #2 (permalink)  
Antiguo 18/10/2008, 08:16
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Ayuda con consulta a base de datos

Intenta más o menos de este modo:

Código:
select t1.campo1, t1.campo2, t2.campo1, t2.campo2 from tabla1 as t1, tabla2 as t2 where t2.campo1 like '%".$busqueda."%'" and t1.IDTabla1=t2.IDTabla1
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 20/10/2008, 09:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 166
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Ayuda con consulta a base de datos

Muchas gracias The Web Saint, pero jop, no me va de ninguna de las maneras :S

De todos modos, sin usar alias (por simplificar) se podría hacer? Es decir, aprovechando la consulta siguiente:

select * from tabla2
INNER JOIN tabla1
ON tabla2.idtabla1=tabla1.idtabla1
where campo1 like '%".$busqueda."%'"

Se puede hacer que saque también los datos que planteaba en mi consulta?? (para refrescar, el dato que seleccionamos con la busqueda que limitamos en el where, tiene un campo que es IDTabla1, por el que se relaciona con la tabla 1, lo que estoy tratando de hacer es que a la vez, me devuelva todos los datos de la tabla2 que compartan ese mismo IDTabla1)

Gracias y un saludo.
  #4 (permalink)  
Antiguo 20/10/2008, 14:40
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Ayuda con consulta a base de datos

uhmm Bueno, poraue no colocas el código, podría estar el error en otro lado y no en la consulta en sí.
Aunque deberías ejecutarlas en phpMyAdmin en la consola antes de colocarla en php, eso si no estas seguro que es correcta, como este caso.
O usa un alert para imprimir la consulta antes de su ejecución.
Pero muestranos la parte del código donde haces la consulta y retomas los datos.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #5 (permalink)  
Antiguo 20/10/2008, 16:37
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Ayuda con consulta a base de datos

Yo tengo muy oxidado el SQL, pero juraría que si aplicas la restricción del 'where' directamente en la consulta, no te mostrará nunca el resto de registros que compartan el idtabla1, ya que tabla2.campo1 será distinto para esos registros.

Pienso que quizás te interese seleccionar primero el registro buscado, y después seleccionar en tabla2 todos los registros con el mismo idtabla1 que el seleccoinado, componiendo dos selecciones y aplicando el inner join sólo a la segunda.

Un saludo.
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 22:05.