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

problema con consulta

Estas en el tema de problema con consulta en el foro de Mysql en Foros del Web. Hola Amigos, tengo tres tablas, una de centros de idiomas una de idiomas y otra que es la relacion de estas dos, donde tengo un ...
  #1 (permalink)  
Antiguo 25/06/2011, 16:16
 
Fecha de Ingreso: mayo-2008
Mensajes: 111
Antigüedad: 15 años, 10 meses
Puntos: 1
problema con consulta

Hola Amigos, tengo tres tablas, una de centros de idiomas una de idiomas y otra que es la relacion de estas dos, donde tengo un el id del centro y los idiomas que dicta, ya que un centro puede dictar varios idiomas.

No tenog probelmas si tengo que relacionar el centro con un solo idioma, pero no se me ocurre como hacer la consulta para que directamente me busque por los tres idiomas.

Les muestro como tengo ahora.

Código PHP:
SELECT FROM centro c
JOIN rel_idiomas ri ON ri
.id_idioma AND ri.id_centro c.id_centro 
  #2 (permalink)  
Antiguo 25/06/2011, 20:59
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema con consulta


<saludos>
Pues en primera no se si este bien usado ese join que tienes pues hasta donde he visto casi siempre el join luego del ON usa el cruce de los campos de ambas tablas.
En segunda, porque no usas la tercera (los idiomas) tabla aquí??
es decir, la consulta debería unir a las tres tablas, para que puedas filtrar
tanto por centro como por idioma, o por alguno de los dos, para saber por ejemplo
que centro dicta cuales idiomas, o cual idioma es dictado en cuales centros,
o si se dicta cierto idioma en cierto centro.
En cuyo caso te sugeriría algo así:

Código SQL:
Ver original
  1. SELECT c.descripcion,i.descripcion FROM centro c
  2. INNER JOIN rel_idiomas ri ON c.id_centro = ri.id_centro
  3. INNER JOIN idiomas i ON ri.id_idioma = i.id_idioma
  4. WHERE 1 =1 AND i.id_idioma = 1 AND c.id_centro = 1;

Obviamente, los AND deberían ser dinámicos dependiendo
si se busca por cualquiera de los filtros posibles, o si ya vas a manejar
consultas fijas en varias partes, pues entonces los AND serian fijos
(por ese tema del dinamismo, fue que use el WHERE 1 = 1 pero pues si son fijos,
puedes obviar esa parte y poner uno de los AND como WHERE)

</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: Ninguno
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 00:14.