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

Algo que creo que sería una consulta multitabla sencilla, ¿me ayudáis a diseñarla?

Estas en el tema de Algo que creo que sería una consulta multitabla sencilla, ¿me ayudáis a diseñarla? en el foro de Bases de Datos General en Foros del Web. Veréis, a mi página web le llegan varias tablas (que podemos llamar elementos, y una tabla se llamará a lo mejor "cachivache", otra "lavadora", etc.). ...
  #1 (permalink)  
Antiguo 05/09/2005, 21:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 9 meses
Puntos: 6
Algo que creo que sería una consulta multitabla sencilla, ¿me ayudáis a diseñarla?

Veréis, a mi página web le llegan varias tablas (que podemos llamar elementos, y una tabla se llamará a lo mejor "cachivache", otra "lavadora", etc.). Y además, dentro de cada tabla tengo unas id's señaladas (la 1, la 4 y la 5 para cachivache, por ejemplo, y la 1 y la 2 para lavadora).

Pues bien, con esas id's y esas tablas, quiero hacer una consulta que me devuelva ordenados por un campo que tienen las tablas que se llama "localizacion".

Pero más fácil que eso podría ser: yo tal vez pudiera de antemano en qué "localizaciones" pueden estar los elementos, por lo que puedo hacer una búsqueda uno a uno comprobando si están en la localización 1, 2, etc. Pero vamos, si no, me tocaría saber cómo obtengo todas las localizaciones posibles en un solo recordset (una a una las sé hacer, select localización from cachivache where id=3 ¿Y juntarlas?).

Entonces, si para comprobar si un elemento está en una localización yo haría:

select id from cachivache where localización=1 and id=1

¿Cómo puedo hacer la consulta multitabla para todos los que me han llegado, y al final obtener con cada consulta multitabla, en un recordset, sólo los objetos de una localización? Supongo que con cosas de INNER JOIN.

Espero haberme explicado bien, si algo no se entiende, preguntadme.

Saludos

Última edición por un_tio; 05/09/2005 a las 21:45
  #2 (permalink)  
Antiguo 06/09/2005, 01:30
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 19 años, 3 meses
Puntos: 0
La verdad es que no me he enterado muy bien, ¿no te valdría poner un OR?

Código PHP:
select id from cachivache where (localización=and id=1) or (localizacion =and id=2) or.... 
  #3 (permalink)  
Antiguo 06/09/2005, 03:33
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 9 meses
Puntos: 6
Eso para una tabla, sí, pero hay varias y quiero obtener el resultado común (donde siempre salga logalizacion=2, por ejemplo. Es decir, un mismo valor).

Sería eso que has hecho con cachivache (pero con localizacion siempre a un mismo valor), y además con otras tablas. Na, en fin... creo que al final no me interesa la consulta común (pues obtendría id's de cada tabla pero no la tabla a la que pertenecen, y eso no me sirve).

¿Se os ocurre algún método? Lo dicho, la cuestión es que tengo varias id's de algunas tablas, y quiero de ese grupo, ir sacando grupos más pequeños según sea el campo localizacion. No sé si la programación de esto estará quizás más orientada a trabajar con objetos recordset.

Última edición por un_tio; 06/09/2005 a las 03:42
  #4 (permalink)  
Antiguo 06/09/2005, 03:44
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 19 años, 3 meses
Puntos: 0
A ver si algo asi te vale:

Código PHP:
select id from cachivache ca,lavadora la where ca.localizacion and la.localizacion=and (ca.id =or ca.id =or la.id =or la.id=2
O algo asi:

Código PHP:
select id from cachivache where localización=and (id=or id=4UNION 
select id from lavadora where localización
=and (id=or id=2
  #5 (permalink)  
Antiguo 06/09/2005, 14:52
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 9 meses
Puntos: 6
La primera forma no me va, pero la segunda sí y sí me serviría. Pero me gustaría saber cómo añadir un segundo campo en el que incluya el nombre de la tabla (repetido en todas), si no sólo me sale una colección de id's que no sé a qué tablas corresponden.

Una solución obviamente es incluir en cada tabla una columna en la que vaya a ir siempre repetido hasta el infinito el nombre de la tabla, pero quizás haya un método que gaste menos recursos como el que he dicho, que sería añadir un segundo campo con el nombre de la tabla (tal vez guardando ésta en una variable o algo así, y después creando una nueva columna, no lo sé).
  #6 (permalink)  
Antiguo 07/09/2005, 00:34
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 19 años, 3 meses
Puntos: 0
Es que no se muy bien para que quieres hacer esa consulta, no se si te valdria un array.
Primero haces una consulta para una tabla, metes los resultados en un array, donde la clave es el id que has recuperado con la consulta y el valor es el nombre de la tabla.
Luego haces la consulta para la otra tabla y metes los resultados en el mismo array pero ahora el valor de cada posicion es el nombre de la segunda tabla.

No se si esto te valdra, es que no se que es lo que quieres hacer con esos resultados.
  #7 (permalink)  
Antiguo 07/09/2005, 14:41
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 9 meses
Puntos: 6
Igual valdría. ¿Te refieres a arrays usados desde SQL Server o desde ASP?
  #8 (permalink)  
Antiguo 08/09/2005, 01:28
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 19 años, 3 meses
Puntos: 0
Arrays en ASP o en el lenguaje de programacion que utilices.
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:15.