Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Armar consulta sql sobre 4 tablas. (http://www.forosdelweb.com/f86/armar-consulta-sql-sobre-4-tablas-503359/)

Paranoid 06/07/2007 07:16

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!

axz 09/07/2007 14:26

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 ;)


La zona horaria es GMT -6. Ahora son las 07:44.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.