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

Armar consulta sql sobre 4 tablas.

Estas en el tema de Armar consulta sql sobre 4 tablas. en el foro de Mysql en Foros del Web. Hola, la verdad es que no suelo utilizar sql mas allá de sentencias basiquillas select, insert etc... Y las busquedas las hago mas por programacion ...
  #1 (permalink)  
Antiguo 06/07/2007, 07:16
 
Fecha de Ingreso: diciembre-2003
Mensajes: 222
Antigüedad: 20 años, 11 meses
Puntos: 2
Armar consulta sql sobre 4 tablas.

Hola,

la verdad es que no suelo utilizar sql mas allá de sentencias basiquillas select, insert etc... Y las busquedas las hago mas por programacion que por sql... y la verdad me gustaria que dejara de ser asi. Y despues de este rollo alli va la pregunta:

Tengo 4(x) tablas(campos) relacionadas entre si:
- tb_artistas (id,alias)
- tb_estilos (id,nombre)
- tb_artistas_estilos (id,id_artista,id_estilo).
- tb_cuadros(id,nombre,id_artista).

Ahora bien quiero poder hacer una consulta sobre una palabra 'X' y que me salga como resultado los artistas que el alias es parecido a 'X', que usan estilos que su nombre es parecido a 'X', y que
tienen algun cuadro cuyo nombre se parezca a 'X'. Claramente sin aparecer 2 veces ningun resultado. Se admiten todo tipo de sugerencias para mostrar los resultados etc...

Yo lo he intentado asi, pero el resultado es un desastre sin ninguna logica :( :

Código:
SELECT DISTINCT tb_artistas.alias,tb_artistas_estilos.id_artista,tb_artistas_estilos.id_estilo,tb_estilos.nombre FROM tb_artistas ,tb_artistas_cuadros,tb_artistas_estilos,tb_estilos where 1 OR tb_artistas_cuadros.id_artista=tb_artistas.id OR tb_artistas_cuadros.nombre like '%a%' OR tb_artistas_estilos.id_artista=tb_artistas.id OR tb_artistas_estilos.id_estilo=tb_estilos.id OR tb_estilos.nombre like '%a%' OR tb_artistas.alias like '%a%'

Muchas gracias a tod@s!
  #2 (permalink)  
Antiguo 09/07/2007, 14:26
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años, 5 meses
Puntos: 10
Re: Armar consulta sql sobre 4 tablas.

Como sugerencia lee acerca de JOINS, intenta algo del tipo:

Código PHP:
SELECT a.aliasae.id_artistaae.id_estiloe.nombre
FROM tb_artistas_estilos ae
INNER JOIN tb_artistas a
ON ae
.id_artista a.id
INNER JOIN tb_estilos e
ON ae
.id_estilo e.id
INNER JOIN tb_cuadros c
ON c
.id_artista a.id
WHERE a
.alias LIKE "%a%"
OR e.nombre LIKE "%a%"
OR c.nombre LIKE "%a%" 
en el supuesto de que el valor que quieras buscar y comparar sea "a" ...
OJO: esto solo te funcionará si las 4 tablas tienen valores coincidentes, de ahí la sugerencia de leer más sobre JOINS ...

suerte con el aprendizaje ;)
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:56.