Comunidad de diseño web y desarrollo en internet online

consulta SQL

Citar            
MensajeEscrito el 17 Abr 2009 06:51 am
Hola chicos, una preguntilla, a ver si me ayudais por favor:

Yo tengo una BBDD con dos tablas, una que se llama prendas y otra que se llama tallas, estas son:

Tabla prendas Tabla tallas
id_prenda prenda id_talla tallas
1 pantalon 1 M
2 jersey 2 S
3 chandal 3 L
4 camisa 4 XL

Etoncespara hacer una relación N-N me creo otra tabla que contega los id.s

id_prenda id_talla
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
etc...

Etonces ¿Como seria la consulta SQL?, ¿Y si tubiera mas tablas (por ejmplo imagen, prenda, referencia, precio?

Gracias da antemano, compañeros :wink:

Por boryi

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Abr 2009 10:11 am
Hola boryi, ¿Cómo sería la consulta SQL para qué?, ¿para listar todas las prendas con sus respectivas tallas?, si es así, y suponiendo que la tercera tabla se llama prendas_tallas, la consulta sería:

Código MySQL :

SELECT p.prenda, t.talla

FROM prendas_tallas pt

INNER JOIN prendas p ON p.id = pt.id_prenda

INNER JOIN tallas t ON t.id = pt.id_talla
Y lo ordenas por el criterio que mejor te parezca y/o te sea de mayor utilidad, saludos...

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

firefox
Citar            
MensajeEscrito el 17 Abr 2009 11:39 am
Gracias KB-27.

Si, la colsulta es para listar todas los registros, ¿Y si tubiera tres campos en la misma tabla (por ejemplo; en la tabla prendas; si tubiera "imagen, referencia, prenda")??

Y estaria bien si pongo:

SELECT prenda, talla, id_prenda, id_talla

FROM prendas, tallas, prendas_tallas

WHERE id_prenda.prenda = id_talla.talla


Y si esta bien, ¿Que diferencia tengo en usar esto y el INNER JOIN??

Gracias otra vez :wink:

Por boryi

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Abr 2009 01:32 pm
Hola de nuevo boryi, si la tabla de prendas tuviese más campos que quisieras mostrar simplemente los agregas al SELECT y listo, sería:

Código MySQL :

SELECT p.prenda, p.imagen, p.referencia, t.talla
 
FROM prendas_tallas pt 
 
INNER JOIN prendas p ON p.id = pt.id_prenda 
 
INNER JOIN tallas t ON t.id = pt.id_talla 
Con respecto al SELECT que planteas está mal, la condición del WHERE es errónea.

La diferencia entre utilizar JOINS y hacer un producto cartesiano entre tablas, es decir, algo como lo que tu planteas

Código MySQL :

SELECT * FROM tabla1, tabla2, tabla3 WHERE . . .
Es que los JOINS se ejecutan más rápido, esto porque al hacer el producto cartesiano se cruzan completamente las tablas y luego se seleccionan las filas que cumplen con la condición planteada, mientras que cuando se hace un JOIN para cada fila de una tabla se busca directamente en la otra tabla la(s) fila(s) que cumplen con la condición.

Espero me hayas entendido y haber sido de ayuda, saludos...

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.