Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 06-jul-2007, 07:16   #1 (permalink)
Paranoid está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 194
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!
Paranoid está desconectado   Responder Citando
Antiguo 09-jul-2007, 14:26   #2 (permalink)
axz
axz tiene algunos puntos positivos de karma
 
Fecha de Ingreso: mayo-2005
Mensajes: 299
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 ;)
axz está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:31.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93