Comunidad de diseño web y desarrollo en internet online

Dos tablas mediante sentencia SELECT

Citar            
MensajeEscrito el 13 Jun 2012 06:51 am
Hola! :)

Me estoy iniciando en MySQL y mi duda es la siguiente:
Tengo dos tablas: una llamada "libros" y otra llamada "colección".
Mediante una sentencia SELECT quería mostrar todos los códigos y títulos de la tabla "libros", junto con el nombre de la colección a la que pertenecen.
En la tabla "libros" se encuentran los códigos de la colección a la que pertenece cada libro, en la columna "cod_coleccion" y el nombre de cada colección se encuentra en la tabla "colección".

¿Cómo sería la sentencia completa para conseguir un resultado parecido a este?: :?

+--------------+---------------+------+-----+--------
| cod | Titulo | Nombre |
+--------------+---------------+------+-----+--------
| 1 | Oviedo | Asturias |
| 2 | Gijón | Asturias |
| 3 | Avilés | Pelayo |
+--------------+-------------+------+-----+----------

Gracias de antemano :wink:

Por Astur7

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Jun 2012 03:56 pm

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

chrome
Citar            
MensajeEscrito el 13 Jun 2012 05:09 pm
Pues...

Código MySQL :

SELECT `libros`.*, `colecciones`.`nombre` FROM `libros`,`colecciones` WHERE `libros`.`cod_coleccion` = `colecciones`.`cod`

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Jun 2012 05:22 pm
DriverOp, si, eso funciona, pero es muy mala practica, eso no te da control sobre como se unen las tablas, lo correcto es usar JOIN
(creo que esto ya lo habíamos discutido antes)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

chrome
Citar            
MensajeEscrito el 13 Jun 2012 05:26 pm
Sí, ya lo habíamos discutido antes. Y sigo sin saber por qué se pierde ese control que mencionas.

Pero para el caso que nos ocupa, esa instrucción es suficiente.

Además, un WHERE es diez veces más rápido que un JOIN.

Acepto que en el supuesto caso que un libro no pertenezca a ninguna colección, éste no aparecerá en la tabla de resultado del SELECT, pero eso ya depende de cómo esté implementada la base de datos y si eso se permite o no (Astur7 no lo especifica).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Jun 2012 06:28 pm
no, un where no es mas rapido que un que un ON (no almenos en tiempo de respuesta), resulta lo siguiente

con JOIN tu decides que campo de las tablas se van a conectar ambas tablas, demás esta decir que los campos que conectan (por ejemplo id_usuario) debe ser un indice o PK
ademas decides si lo que queda fuera de esta conexión se muestra o no.

es cosa de ver el tuto para darte cuenta de todas las posibilidades

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

chrome
Citar            
MensajeEscrito el 13 Jun 2012 09:43 pm
He leído el tuto que has escrito (y la verdad es que es una maravilla), de hecho yo mismo he escrito un artículo en mi sitio con más o menos el mismo tema (que quería publicar aquí en Cristalab pero como no se pueden hacer tablas, desistí) .

Y por lo demás, me temo que no veo tales limitaciones usando un WHERE.

Sobre la velocidad, tengo ejemplos que lo demuestran.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Jun 2012 01:43 am
Muchas gracias Inyaka, muy buen tutorial ese ;). Duda resuelta! :)

Gracias también DriverOp ;)

Un saludo, nos vemos pronto!

Por Astur7

1 de clabLevel



 

chrome

 

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