Foros del Web » Programando para Internet » PHP »

Obtener valores de varias tablas

Estas en el tema de Obtener valores de varias tablas en el foro de PHP en Foros del Web. Buenas noches. Tengo una relación de varios a varios con las siguientes tablas: tabla_facultad 1 ----> tabla_fxd <----- 1 tabla_departamento En la tabla "tabla_fxd" tengo ...
  #1 (permalink)  
Antiguo 12/03/2009, 15:42
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Obtener valores de varias tablas

Buenas noches.

Tengo una relación de varios a varios con las siguientes tablas:

tabla_facultad 1 ----> tabla_fxd <----- 1 tabla_departamento

En la tabla "tabla_fxd" tengo los campos clave de la tabla facultad y tabla departamento.

La cuestión es que quiero cargar en un select dependiente de otro select principal los valores que estén asociados en la tabla_fxd pero obtener la descripcion de tabla_departamento para poder mostrar.

No se si me he explicado mas o menos bien.

Ejemplo:
En un select principal cargo los valores de tabla_facultad

En un select secundario, deben cargarse todos los valores de tabla_fxd cuyo campo clave coincida con el seleccionado en el select principal (de la tabla_facultad). Hasta ahi más o menos bien, pero la cosa está en que cuando se carguen los valores de tabla_fxd debo tomar la descripción de ese valor de la tabla_departamento que es donde está el texto.

¿Sería posible hacer eso con alguna consulta? Creo que hay una claúsula que se llama "inner_join" o algo así que puede seleccionar valores de una tabla y buscarlos en otra o eso creo.

Por favor, ¿alguna idea o ayuda para orientarme por el buen camino?

Gracias de antemano.
  #2 (permalink)  
Antiguo 12/03/2009, 15:45
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Obtener valores de varias tablas

No es que creo existe el INNER JOIN ademas pon algo de codigo para ubicarse mejor
  #3 (permalink)  
Antiguo 12/03/2009, 23:41
 
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 73
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Obtener valores de varias tablas

BUeno a lo que entendi lo que deseas es cuando se carga un valor dado de la primera tabla en un list 1, automaticamente solo muestre el list 2 datos relacionados con el valor seleccionado del list 1. Bien, si esta afirmacion es cierta, lo que deberias de hacer es usar AJAX, claro que con javascript tambien lo puedes hacer, seria bueno de que empieces a usar AJAX para que veas su funcionalidad y sus posibleas aplicaciones al desarrollo web.
  #4 (permalink)  
Antiguo 13/03/2009, 06:08
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Obtener valores de varias tablas

Hola.

Desconozco totalmente sobre AJAX y si su implementación requiere de algún software adicional o simplemente es entendido por el intérprete de PHP. ¿Sería muy dificil hacer lo que quiero con AJAX?

rquilca, estas en lo cierto, en el segundo select deben cargarse solo los datos que esten relacionados con la opción del primer select.

Lo que ocurre que al ser una relación de varios a varios, esa tabla solo posee los campos clave y en el segundo select debe salir también la descripción, la cual se encuentra en otra tabla también relacionada con la tabla de varios a varios. (no se si más o menos he explicado bien)

¿Es muy dificil de utilizar AJAX?
  #5 (permalink)  
Antiguo 13/03/2009, 06:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Obtener valores de varias tablas

No, no es difícil usar AJAX, y no, el intérprete de PHP no lo va entender (de hecho, lo va a ignorar, pues es código Javascript), el que va a interpretar el código Javascript es el navegador y podrá hacer las peticiones al servidor (eso es AJAX). Espero no haberte confundido .

Puedes empezar a documentarte por aquí:
http://www.forosdelweb.com/f77/faqs-...o-ajax-332366/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 13/03/2009, 06:51
Avatar de pacmanaman  
Fecha de Ingreso: marzo-2009
Mensajes: 84
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: Obtener valores de varias tablas

La consulta es ...

SELECT tR. * , t1. * , t2. *
FROM tablarelacion tR
JOIN tabla1 t1 ON t1.id = tR.t1_id
JOIN tabla2 t2 ON t2.id = tR.t2_id
  #7 (permalink)  
Antiguo 13/03/2009, 17:39
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Obtener valores de varias tablas

Hola.

No tengo muy claro la estructura SQL .

Básicamente según entiendo hay que hacer un select de todos los registros de la tabla relacion y la tabla departamentos FROM tablarelacion.campoclave JOIN tabla_departamentos.campoclave ON tabla_departamentos.campoclave = tablarelacion.campoclave

Lo encuentro un poco recíproco y no se si es así como debe ser.
  #8 (permalink)  
Antiguo 13/03/2009, 18:43
 
Fecha de Ingreso: febrero-2009
Ubicación: Cusco - Peru
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Obtener valores de varias tablas

Tendrias q verlo como juntar tu Tabla1 con tu [INNER] tabla2 las cuales [ON] tienen en comun un valor[ = ], esto te da como resultado una tabla mayor conformada por tus dos tablas 1 y 2, luego de esto unes [INNER] una tercera tabla la cual [ON] debe tener un campo en comun [ = ] con la tabla creada[union de 1 y 2] entonces tu resultado es la union de tus 3.

Posteriormente realizas un SELECT para asi poder obtener los campos q rekieras de la gran tabla formada [tablas 1,2 y 3]

mas o menos asi es como debes deentender el INNER, INNER JOIN, etc etc, en palabras simples UNIR cuantas tablas tengas [solo si tiene campos en comun] para obtener valores de esas tablas
  #9 (permalink)  
Antiguo 13/03/2009, 18:55
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Obtener valores de varias tablas

Muchas gracias por tu explicación, he estado haciendo la consulta y efectivamente obtengo los resultados que esperaba.

Ya he conseguido poner el código que me recarga el select principal, incluso enlazo con la función javascript.

El problema lo tengo a ver de que forma puedo indicarle a javascript que me recargue el segundo select con todos los departamentos que coincidan con el centro seleccionado desde el select principal.
  #10 (permalink)  
Antiguo 13/03/2009, 19:10
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Obtener valores de varias tablas

El codigo que utilizo es el siguiente:

Código:
<script>
	function cargar_dptos(codigofacultad, numregfacultad, numregdepart){
		var grupo=new Array(numregfacultad)
		
		//Crea tantos arrays como valores hay en el combo principal
		for (i=0; i<numregfacultad; i++) grupo = new Array()
		
							
	}

</script>
Las consultas son correctas, obtengo los datos que realmente quiero, son estas:

Código PHP:
//consulta para el combo principal
$rsFacultad=mysql_query("SELECT * FROM t_facultad order by descripcion ASC"$conn);
$numfac mysql_num_rows($rsFacultad);

//Consulta para el segundo combo (select)
$sql "SELECT t_facultad_x_departamento.*, t_departamentos_facultad.* FROM t_facultad_x_departamento INNER JOIN t_departamentos_facultad ON t_facultad_x_departamento.iddpto = t_departamentos_facultad.iddpto";
$rsDepartamento mysql_query($sql);
$numdpt mysql_num_rows($rsDepartamento); 
En el select name principal tengo la llamada a javascript como sigue:

onChange="cargar_dptos(this.options.selectedIndex, <?php echo $numfac; ?>, <?php echo $numdpt; ?>)

El problema está que desde javascript debo cargar el segundo combo (generar tantos arrays como opciones tenga el select principal (aqui no creo que haya problema)

En PHP he conseguido cargar todos los datos en el segundo combo pero se muestran todos y no está enlazado con el select principal.

¿Hay alguna forma de poder poner el código PHP que me funciona en javascript para que haga lo mismo?
Gracias.
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 13:52.