A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de SQL y MySQL

Curso de SQL y MySQL

Alberto Alcocer

Alberto Alcocer

Comando JOIN

16/24
Recursos

Aportes 124

Preguntas 32

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Resumen de la clase:

-- Listar todos los autores con ID entre 1 y 5 con los filtro mayor y menor igual
SELECT * FROM authors WHERE author_id > 0 AND author_id <= 5;

-- Listar todos los autores con ID entre 1 y 5 con el filtro BETWEEN
SELECT * FROM authors WHERE author_id BETWEEN 1 AND 5;

-- Listar los libros con filtro de author_id entre 1 y 5
SELECT book_id, author_id, title FROM books WHERE author_id BETWEEN 1 AND 5;

-- Listar nombre y titulo de libros mediante el JOIN de las tablas books y authors
SELECT b.book_id, a.name, a.author_id, b.title
FROM books AS b
JOIN authors AS a
  ON a.author_id = b.author_id
WHERE a.author_id BETWEEN 1 AND 5;

-- Listar transactions con detalle de nombre, titulo y tipo. Con los filtro genero = F y tipo = Vendido.
-- Haciendo join entre transactions, books y clients.
SELECT c.name, b.title, t.type
FROM transactions AS t
JOIN books AS b
  ON t.book_id = b.book_id
JOIN clients AS c
  ON t.client_id = c.client_id
WHERE c.gender = 'F'
  AND t.type = 'sell';

-- Listar transactions con detalle de nombre, titulo, autoor y tipo. Con los filtro genero = M y de tipo = Vendido y Devuelto.
-- Haciendo join entre transactions, books, clients y authors.
SELECT c.name, b.title, a.name, t.type
FROM transactions AS t
JOIN books AS b
  ON t.book_id = b.book_id
JOIN clients AS c
  ON t.client_id = c.client_id
JOIN authors AS a
  ON b.author_id = a.author_id
WHERE c.gender = 'M'
  AND t.type IN ('sell', 'lend');

Anexo los registros de la tabla transactions:

INSERT INTO transactions (book_id, client_id, type, finished) VALUES
	(12,34,'sell',1),
	(54,87,'lend',0),
	(3,14,'sell',1),
	(1,54,'sell',1),
	(12,81,'lend',1),
	(12,81,'sell',1),
	(87,29,'sell',1);

Para las personas que no tengan datos en la tabla de trasactions, yo tuve que eliminar la tabla original (la que ven铆a en el archivo, DROP TABLE), porque no ten铆a dentro del ENUM a 鈥榬eturn鈥, as铆 que la volv铆 a crear, esto es una pregunta tambi茅n, si existe otra manera de hacerlo con el UPDATE, agradezco que me digan c贸mo. Luego hice el INSERT yo mismo, con los datos que ten铆a el profesor, los dejo aqu铆 por si les sirven.

INSERT INTO transactions(book_id, client_id, type, finished)
VALUES(12, 34, 鈥榮ell鈥,1),
(54, 87, 鈥榣end鈥,0),
(3, 14, 鈥榮ell鈥,1),
(1, 54, 鈥榮ell鈥,1),
(12, 81, 鈥榣end鈥,1),
(12, 81, 鈥榬eturned鈥,1),
(87, 29, 鈥榮ell鈥,1);

Insertar datos en 鈥榯ransactions鈥:
INSERT INTO transactions (book_id, client_id, type, finished) VALUES
(12,34,鈥榮ell鈥,1),
(54,87,鈥榣end鈥,0),
(3,14,鈥榮ell鈥,1),
(1,54,鈥榮ell鈥,1),
(12,81,鈥榣end鈥,1),
(12,81,鈥榬eturn鈥,1),
(87,29,鈥榮ell鈥,1);

Script Tabla transactions:

INSERT INTO transactions(transaction_id,book_id,client_id,type,finished)
VALUES(1,12,34,鈥榮ell鈥,1),
(2,54,87,鈥榣end鈥,0),
(3,3,14,鈥榮ell鈥,1),
(4,1,54,鈥榮ell鈥,1),
(5,12,81,鈥榣end鈥,1),
(6,12,81,鈥榬eturn鈥,1),
(7,87,29,鈥榮ell鈥,1);

El script no incluye trasacciones 馃槬

data transactions

INSERT INTO transactions (book_id, client_id, type, finished) VALUES
(12,34,'sell',1),
(54,87,'lend',0),
(3,14,'sell',1),
(1,54,'sell',1),
(12,81,'lend',1),
(12,81,'sell',1),
(87,29,'sell',1);

El usar los alias 鈥渆jemplo鈥 books como b es en mi personal punto de vista mala pr谩ctica dado que si tienes demasiadas tablas a la hora de hacer los cruces se confunde mucho dado que me ha tocado revisar queries bastante largos y suelen poner el alias as铆 mismo como en esta clase y es tedioso andar buscando a que tabla se le nombr贸 as铆, es mejor una buena descripci贸n. saludos.

Vengo desde fundamentos de bases de datos, y va quedando m谩s claro el uso de join

Contextualizado el aporte del compa帽ero @ecedenyo

SELECT c.name AS 'Cliente', b.title AS 'Titulo Libro', a.name as 'Autor', t.type AS 'Tipo de Transacci贸n'
FROM transactions AS t
JOIN books as b
USING(book_id)
JOIN clients as c
USING(client_id)
JOIN authors as a
USING(author_id)
WHERE
c.gender = 'F'
AND
t.type = 'sell';

Excelente curso tan solo un aporte, las columnas tambi茅n puede tener un ALIAS.
Por Ejemplo en la 煤ltima consulta seleccionamos las siguientes columnas

SELECT c.name, b.title, a.name, t.type

y el resultado ser谩n dos columnas con el campo name donde no sabemos si es el nombre del cliente o el nombre del autor. Para ello podemos resolver de la forma:

SELECT c.name AS client_name, b.title, a.name AS author_name, t.type

Me gustar铆a compartir este video a los que no les quedo claro (es incre铆blemente expl铆cito): VIDEO

  1. Explicaci贸n verbal
  2. Explicaci贸n gr谩fica

Muy interesante llegar a este punto y darse cuenta de lo que la normalizacion de los datos nos permite hacer. Para todos aquellos que desean entender un poco mas sobre esto les recomiendo leer un poco sobre 鈥渓as doce reglas de Codd鈥 esto les dara una vision clara de como funciona todo esto.

Alguien lo noto?

Para los que copiaron la creaci贸n de la tabla 鈥榯ransactions鈥 de la imagen que dej贸 el profesor, les dejo la sentencia para modificarla y agregarle la opci贸n de 鈥榬eturn鈥 en el campo type:

alter table transactions MODIFY type enum('lend','sell','return') NOT NULL;

adem谩s les dejo los datos que se ingresan:

INSERT INTO transactions(book_id, client_id, type, finished)
VALUES(12, 34,'sell', 1),
(54, 87, 'lend', 0),
(3, 14, 'sell', 1),
(1, 54, 'sell', 1),
(12, 81, 'lend', 1),
(12, 81, 'return', 1),
(87, 29, 'sell', 1)
;

La informaci贸n es poder.

Welfare = bienestar鈥 Seguro es un libro de microeconom铆a.

Creo que la consulta para saber si el autor 4 hab铆a escrito o no un libro es la siguiente:
SELECT title
FROM books
WHERE author_id=4;

Porque el query del v铆deo del profesor solo muestra el nombre del autor, si se le pone 鈥5鈥, muestra el nombre de Juan Rulfo aunque si tenga publicaciones. 馃槈

Cuando las dos columnas que se van a usar para el JOIN tiene nombres iguales, se puede usar USING, en lugar de ON x = y.

Les dejo este site para generar data aleatoria en el caso que quieran jugar con tablas con mucha data: https://www.generatedata.com/

El c贸digo no tiene informaci贸n en TRANSACTIONS:

INSERT INTO transactions(transaction_id, book_id, client_id, type, finished)
VALUES
(1, 12, 34, 鈥榮ell鈥, 1),
(2, 54, 87, 鈥榣end鈥, 0),
(3, 3, 14, 鈥榮ell鈥, 1),
(4, 1, 54, 鈥榮ell鈥, 1),
(5, 12, 81, 鈥榣end鈥, 1),
(6, 12, 81, 'return鈥,1),
(7, 87, 29, 鈥榮ell鈥, 1);

y el c贸digo tampoco tiene 'return ', hay que modificar type y agregarlo.

Los Joins es tomar dos tablas que al relacionarlas y desplegar esa informaci贸n ya relacionada.
SELECT b.book_id, a.name, a.author_id, b.title
FROM books as b
JOIN authors as a
On a.author_id = b.author_id
WHERE a.author_id between 1 AND 5

ALTER TABLE transactions modify type enum(鈥渓end鈥, 鈥渟ell鈥, 鈥渞eturn鈥) NOT NULL;
.
INSERT INTO transactions (transaction_id,book_id,client_id,type,finished)
VALUES (1,12,34,鈥漵ell鈥,1),
(2,54,87,鈥漧end鈥,0),
(3,3,14,鈥漵ell鈥,1),
(4,1,54,鈥漵ell鈥,1),
(5,12,81,鈥漧end鈥,1),
(6,12,81,鈥漴eturn鈥,1),
(7,87,29,鈥漵ell鈥,1);
SELECT c.name, b.title, a.name, t.type
FROM transactions AS t
JOIN books AS b
On t.book_id = b.book_id
JOIN clients AS c
On t.client_id = c.client_id
JOIN authors AS a
ON b.author_id = a.author_id
WHERE c.gender = 鈥淢鈥
AND t.type IN (鈥渟ell鈥, 鈥渓end鈥);

Espero les sirva de ayuda

salgan corriendo jajaja
cuando dice que se espantan =(

reinciar la cuenta de transaction_id

alter table nombre_de_la_tabla AUTO_INCREMENT=1;

No me queda claro cual es la definici贸n o concepto de 鈥渢abla pivote鈥, me podrian ayudar con una explicaci贸n mas pragm谩tica

  • Una tabla temporal.
  • Una tabla (books) inicial a la cual se le agregan datos en su formato de visualizaci贸n.
  • Es la tabla (uni贸n ) que se crea a partir de otras dos tablas.

Los JOIN son lo m谩s bonito de la BASE DE DATOS. Imag铆nate navegar de un pa铆s a otro 鈥渟in restricciones鈥 (con relaciones). Algo as铆 lo veo yo. 馃槃

me causa un poco de conflicto que se pueda usar C.name, b.tittle, t.type antes de la declaracion 鈥溾s t, as b, as c鈥 jaja XD

Hice una ligera modificaci贸n, nada m谩s para mejorar la lectura de las comunas.

SELECT c.name, b.title, a.name AS 'Author',  t.type 
    FROM  transactions as t
    join books as b
      on t.book_id = b.book_id
    join clients as c
      on t.client_id = c.client_id
    join authors as a
      on b.author_id = a.author_id
    WHERE c.gender = 'M'
      AND t.type IN ('sell', 'lend');

Justo en donde estoy trabajando utilizan mucho en su base de datos inner join

Mi cabeza acaba de explotar

Jugando un poco

隆Pedazo de curso, Alberto Alcocer! (Y Platzi). Muy muy bueno, de los mejores que les he visto en general.

Simplemente genial.

Alguien tiene los datos de las transacciones?

Convencion over Configuration es un paradigma de programaci贸n de software que busca minimizar el n煤mero de decisiones que un desarrollador necesita hacer. Por ejemplo, si hay una clase 芦venta禄 en el modelo, por convenci贸n la tabla en la base de datos se llamar谩 芦ventas禄.

En el SQL de la secci贸n de archivos est谩 todo excepto inserts para la tabla transactions 馃槮

Ac谩 otro ejemplo como en el curso de GIT de Fredy donde ocupan la consola con la fuente muy peque帽a. Deber铆an ocupar una fuente gigante para poder ver correctamente los comandos. Igual ese fondo con negro se ve bien en la pel铆cula matrix pero en una clase se nota de mal gusto. Tienen a muchos genios de dise帽o que podr铆an ayudarles 馃

Excelente clase

Algo que se puede a帽adir es el uso de tablas temporales que contengan el resultado de un join, para que luego este resultado se le aplique un segundo join de ser necesario, ya que aplicar mas de un join en una sola consulta puede requerir demasiados recursos.

Las clases cada vez se colocan muy interesantes

14- Comando JOIN

  1. El coraz贸n de una bases de datos relacional son las relaciones entre tablas.

  2. SELECT count() FROM authors; count() nos devuelve el n煤mero de resultados de una sentencia SELECT.

  3. SELECT * FROM authors WHERE author_id > 0 AND author_id<= 5; la palabra reservada AND nos permite anidar condiciones o sentencias.

  4. SELECT * FROM books WHERE author_id BETWEEN 1 and 5; la palabra reservada BETWEEN nos ayuda a crear rangos.
    La sentencia JOIN sirve para realizar cruce de tablas, es decir permite juntar datos de distintas tablas y mostrarlas en un tabla temporal (SELECT) con la finalidad de aportar informaci贸n puntual, legible y autentica.

  5. SELECT b.book_id, b.title, a.name, a.author_id FROM authors AS a JOIN books AS b ON a.author_id=b.author_id WHERE a.author_id between 1 AND 30 ; La palabra reservada ON Ayuda al JOIN relacionar y condicionar las b煤squedas de un SELECT-JOIN.

  6. Se puede utilizar varios JOIN en una misma sentencia e incluso uno de los JOIN puede utilizar como tabla pivote que este en un JOIN anterior a esta.SELECT * FROM transactions WHERE t.type=IN(鈥榮ell鈥,鈥榣end鈥); la Funci贸n lo que permites es acotar b煤squedas de palabras especifica.

SELECT T.transaction_id Num_Transaccion, B.title Titulo, B.year Ano, A.name Autor, C.name Nombre, 
C.email Correo, T.type Status
FROM transactions T
INNER JOIN books B
ON B.book_id = T.book_id
INNER JOIN authors A
ON A.author_id = B.author_id
INNER JOIN clients C
ON C.client_id = T.client_id
WHERE C.gender = 'M';```

Resumen de la Clase:
Contenido:

  • Relaciones entre tablas son el corazon de las bases de datos relacionales.
  • JOIN = Inner Join

Funciones:

  • count(*): cuenta todo
  • 0 <= 5 es igual a between 1 and 5

  • Join: tomar dos tablas, relacionarlas y mostrar la informaci贸n ya relacionada.
  • IN(): filtrar varias opciones

Tips:

  • en un FROM puedo usar AS para facilitar escritura (Ej: FROM books AS b)

C贸digo Clase:

--Clase 14 Comando Join

SELECT count(*) FROM books;
SELECT * FROM authors WHERE author_id > 0 and author_id <= 5;
SELECT * FROM authors WHERE author_id between 1 and 5;
SELECT book_id, author_id, title FROM books WHERE author_id between 1 and 5;
SELECT b.book_id, a.name, b.title
FROM books AS b
JOIN authors AS a
    on a.author_id = b.author_id
WHERE a.author_id between 1 and 5;
SELECT b.book_id, a.name, a.author_id, b.title
FROM books AS b
JOIN authors AS a
    on a.author_id = b.author_id
WHERE a.author_id between 1 and 5;
SELECT name FROM authors WHERE author_id = 4;

-- No tenia los datos de transactions, se agregan
INSERT INTO transactions (book_id, client_id, type, finished) VALUES
(12,34,'sell',1),
(54,87,'lend',0),
(3,14,'sell',1),
(1,54,'sell',1),
(12,81,'lend',1),
(12,81,'sell',1),
(87,29,'sell',1);

-- query de transactions
SELECT c.name, b.title, t.type
FROM transactions as t
join books as b
    on t.book_id = b.book_id
join clients as c
    on t.client_id = c.client_id

-- con condiciones
SELECT c.name, b.title, t.type
FROM transactions as t
join books as b
    on t.book_id = b.book_id
join clients as c
    on t.client_id = c.client_id
WHERE c.gender ='F'
    and t.type = 'sell';

-- cuarto join
SELECT c.name, b.title, t.type, a.name
FROM transactions as t
join books as b
    on t.book_id = b.book_id
join clients as c
    on t.client_id = c.client_id
join authors as a
    on b.author_id = a.author_id
WHERE c.gender ='F'
    and t.type = 'sell';

-- Cambios
SELECT c.name, b.title, t.type, a.name
FROM transactions as t
join books as b
    on t.book_id = b.book_id
join clients as c
    on t.client_id = c.client_id
join authors as a
    on b.author_id = a.author_id
WHERE c.gender ='M'
    and t.type IN ('sell', 'lend');
Digamos Los Join no queda guardado como un comando ya sea que quiera volver a hacerlo;
select c.client_id,c.name, a.name, b.title,t.type
from transactions as t 
inner join books as b
on t.book_id = b.book_id
join clients as c
on t.client_id = c.client_id 
join authors as a 
on b.author_id = a.author_id
where c.gender = 'M' and t.type in('sell','lend');

Tengo demsaidas dudas, de los temas mas dificiles con los que me he encontrado, de verdad no me entra la logica. 馃槮

Para quienes crearon la tabla como operations y usaron B-borrowed, R-returned y S-Sold:

INSERT INTO operations (book_id, client_id, type, finished) 
VALUES (12, 34, 'S', 1),
(54, 87, 'B', 0),
(3, 14, 'S', 1),
(1, 54, 'S', 1),
(12, 81, 'B', 0),
(12, 81, 'R', 1),
(87, 29, 'S', 1);

Les hago un aporte que me sirvio mucho:

select <atributos>
from tabla1
inner join tabla 2
on tabla1.atributo_clave = tabla2.atributo_clave

鈥 -- COMDANDO JOIN --------
鈥 Es tomar dos tabls y relacionarlas 鈥
鈥 Puedes ver todas las combinaciones en la imagen de la carpeta

鈥 Si queremos ver la cantidad de algo:

SELECT count(*) FROM books;

鈥 Condicional mayoes y menores:

select * from authors

<code>

 where author_id > 0 and author_id <= 5;

鈥 BETWEEN (entre):

select * from books where author_id between 1 and 5;

鈥 Utilizamos JOINS 鈥

SELECT b.book_id, a.name, b.title
    FROM books AS b -- AS son Alias.
    JOIN authors AS a-- JOIN o INNER JOIN. La menajera m谩s pr谩ctica y el que m谩s se utiliza
        ON a.author_id = b.author_id
    WHERE a.author_id BETWEEN 1 AND 5

El campo author_id es UNSIGNED, con solo la condici贸n <= 5 dentro del WHERE funciona.

usamos el Join para integrar datos de varias tablas y obtener una informaci贸n 煤til

Excelente clase!!!

Ahora todo tiene sentido!
Este query:

	SELECT c.name, b.title, a.name, t.type
	FROM transactions AS t
	JOIN books AS b 
	   ON t.book_id = b.book_id
	JOIN clients AS c
	   ON t.client_id = c.client_id
	JOIN authors AS a
	   ON b.author_id = a.author_id
WHERE c.gender = 'M' AND t.type in ('sell','lend');

Es igual a este:

	SELECT c.name, b.title, a.name, t.type
	FROM transactions AS t
	INNER JOIN books AS b 
	   ON t.book_id = b.book_id
	INNER JOIN clients AS c
	   ON t.client_id = c.client_id
	INNER JOIN authors AS a
	   ON b.author_id = a.author_id
WHERE c.gender = 'M' AND t.type in ('sell','lend');

y este a este otro:

	SELECT c.name, b.title, a.name, t.type
	FROM transactions  t , books b, clients c,  authors  a
	WHERE 
	    t.book_id = b.book_id AND
	    t.client_id = c.client_id AND
               b.author_id = a.author_id AND
	   c.gender = 'M' AND t.type in ('sell','lend');

En clase vimos que el orden de los campos que unen las tablas no importa, pero investigando un poco, es buena pr谩ctica poner primero el 鈥減rimary key鈥 y luego el 鈥渇oreign key (fk)鈥, as铆:

Me paso que la columna de Nombre de Autores no se mostrava entonces forc茅:

a.name AS NombreAutor
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;```

Pienso que ser铆a bueno crear llaves for谩neas sobre esos campos que tengan coincidencia para llevar m谩s control sobre esos valores que luego se relacionar谩n. Lo digo porque solo podr谩n insertar los valores que ya existen en las otras tablas y ayuda un mont贸n. La bronca est谩 cuando desees borrar un autor y se borre el ID y pues dependiendo del tipo de borrado que le pongas (SET NULL, CASCADE) afectar谩 en la otra tabla.

Buenas clases

interesante las consultas que se pueden hacer utilizando la funci贸n JOIN

SELECT c.name AS 'Cliente', b.title AS 'Titulo Libro', a.name as 'Autor', t.type AS 'Tipo de Transacci贸n'
FROM transactions AS t
JOIN books as b
ON
t.book_id = b.book_id
JOIN clients as c
ON
t.client_id = c.client_id
JOIN authors as a
ON
b.author_id = a.author_id
WHERE
c.gender = 'F'
AND
t.type = 'sell';```

Se esta poniendo buena las consultas 馃槑

Muy Buena Clase sobre los Joins

excelente curso

excelente curso鈥

Con este comando puedo hacer las mismas querys que ligar las tablas con una foreign key?

SELECT 	b.book_id, a.name, a.author_id, b.title
FROM 	books AS b 
		JOIN authors AS a 
			  ON a.author_id = b.author_id
WHERE a.author_id BETWEEN 1 AND 5;

BETWEEN

Es importante dominar bien el uso del SELECT junto con el JOIN, hace tiempo un youtuber que es DA le hicieron una entrevista y una de las preguntas requer铆a saber SQL de nivel alto. Dejo el link por si quieren ver: https://www.youtube.com/watch?v=MfP-P8EHGBo minuto 4:05

La cuesti贸n de los alias para las tablas me confunde much铆simo, as铆 que use los nombres de las tablas como tal, pens茅 que eran necesarios los alias para JOIN

SELECT books.book_id, authors.name AS "Author Name",authors.author_id, books.title AS "Name book"  FROM books JOIN authors ON books.author_id = authors.author_id WHERE books.author_id BETWEEN 1 AND 5;
SELECT t.transaction_id,c.name AS 'Cliente',b.title AS 'Libro', a.name AS 'Nombre de autor',b.price, b.book_id, t.type
FROM authors AS a
INNER JOIN books As b
		ON a.author_id = b.author_id
INNER JOIN transactions AS t
		ON b.book_id = t.book_id
INNER JOIN clients AS c
		ON c.client_id = t.client_id
LIMIT 5

Las cosa van quedando cada vez m谩s claras ,muy buena clase.

Select Distinct 'genera una consulta de los registro no repetidos en una tabla

Comprendido

SELECT b.book_id, a.name, b.title,a.author_id AS A_ID ,b.author_id AS B_ID  FROM books AS b  INNER JOIN authors AS a  on a.author_id = b.author_id  WHERE a.author_id BETWEEN 1 AND 5;
select b.book_id, a.name, b.title  
from books as b 
JOIN authors as a 
on a.author_id = b.author_id 
where a.author_id between 1 and 5;

Recuerden que en el campo type de nuestra transacci贸n es un enum, que recibe 2 valores 鈥淟end鈥 y 鈥淪ell鈥, por lo tanto hay que realizar un update para agregarle el Return.

como hago para borrar pantalla en mariadb no me sirve el comando \c

Buenas Noches.
Al colocar esa sentencia me aparece ese error.
Alguien me puede ayudar por favor.

Gracias.

Tengo una duda.
Ejecuto la consulta

SELECT u.id_usuario, u.nombre_usuario, ru.rolusuario
FROM usuarios_rolesusuarios AS uru
JOIN usuarios AS u ON uru.id_usuario = u.id_usuario 
JOIN rolesusuarios AS ru ON uru.id_rolusuario = ru.id_rolusuario;

y no me aparece nada

la tabla 鈥渦suarios_rolesusuarios鈥 Es una tabla intermedia donde relaciono los datos de los usuarios con su respectivo rol en el proyecto

la tabla de 鈥渦suarios鈥 es donde tengo guardados usuarios

la tabla 鈥渞olesusuarios鈥 es donde tengo guadados los roles de usuario de mi proyecto.

Tengo una duda
Alguna vez o铆 hablar de que hacer muchos joins hac铆an lentas las querys
驴Eso es cierto?
Por ejemplo yo estoy dise帽ando una base de datos compleja en la que los usuarios pertenecen a grupos y los grupos tienen otras caracter铆sticas que necesitan tablas aparte y hacen que pueda necesitar hacer hasta 6 joins en una query para obtener informaci贸n de todas las tablas.
Suena un poco exagerado pero no s茅 si estoy haciendo las cosas mal.

En mi experiencia al consultar una tabla con el comod铆n * para referirse a todas las columna contrae bastante tiempo, la mejor forma es especificar una columna.

Lo mismo se aplica a las funciones de integraci贸n como count(???)

SELECT * FROM transactions WHERE t.type=IN('sell','lend'); la Funci贸n lo que permites es acotar b煤squedas de palabras especifica.

Se puede utilizar varios JOIN en una misma sentencia e incluso uno de los JOIN puede utilizar como tabla pivote que este en un JOIN anterior a esta.

El coraz贸n de una bases de datos relacional son las relaciones entre tablas.

SELECT * FROM books WHERE author_id BETWEEN 1 and 5; la palabra reservada BETWEEN nos ayuda a crear rangos.

SELECT count(*) FROM authors; count(*) nos devuelve el numero de resultados de una sentencia SELECT.

SELECT * FROM authors WHERE author_id > 0 AND author_id<= 5; la palabra reservada AND nos permite anidar condiciones o sentencias.

SELECT * FROM books WHERE author_id BETWEEN 1 and 5; la palabra reservada BETWEEN nos ayuda a crear rangos.

La sentencia JOIN sirve para realizar cruce de tablas, es decir permite juntar datos de distintas tablas y mostrarlas en un tablar temporal (SELECT) con la finalidad de aportar informaci贸n puntual, legible y autentica.

SELECT b.book_id, b.title, a.name, a.author_id FROM `authors` AS a JOIN `books` AS b ON a.author_id=b.author_id WHERE a.author_id between 1 AND 30 ; La palabra reservada ON Ayuda al JOIN relacionar y condicionar las b煤squedas de un SELECT-JOIN

como unir las tablas con Join

Muy buena clase.

Apuntes y consultas sobre el JOIN 馃摎

-- JOINS, Hey no te asustes que no muerde (Siven pa convertir los datos en informacion mas legible)
-- Inner Join
SELECT b.book_id, a.name, b.title FROM books AS b INNER JOIN authors AS a ON b.author_id = a.author_id WHERE a.author_id BETWEEN 1 AND 5;

-- Traer la informaci贸n de las transacciones donde el libro haya sido comprado por una mujer 
SELECT c.name as 'client', b.title, a.name as 'author', t.type FROM transactions AS t 
INNER JOIN books AS b
ON t.book_id = b.book_id
INNER JOIN clients AS c 
ON t.client_id = c.client_id
INNER JOIN authors AS a
ON b.author_id = a.author_id
WHERE c.gender = 'F' AND t.type = 'sell';

-- Consultar la informacion de las transacciones simpre y cuando lo haya comprado o prestado y ademas sea hombre
SELECT c.name as 'client', b.title, a.name as 'author', t.type FROM transactions AS t 
INNER JOIN books AS b
ON t.book_id = b.book_id
INNER JOIN clients AS c 
ON t.client_id = c.client_id
INNER JOIN authors AS a
ON b.author_id = a.author_id
WHERE c.gender = 'M' AND t.type IN ('sell', 'lend');

Wuuuaooo, s煤per interesante!! 馃槂