jointure simple
SELECT btlec.nom, btlec.prenom, services.id, services.full_name FROM `btlec`, services where btlec.id_service=services.id;
jointure simple + renommage des colonnes
SELECT btlec.nom, btlec.prenom, services.id, services.full_name AS "nom service" FROM `btlec`, services where btlec.id_service=services.id
SELECT orders.orderid AS "Numero de facture" FROM customers, orders where customers.customerid=orders.customerid;
jointure simple + renommage des tables
btlec deviendra b et services s grace au FROM : btlec b, services c
SELECT b.nom, b.prenom, s.id, s.full_name AS "nom service" FROM btlec b, services s where b.id_service=s.id
renvoie 2 colonnes identiques avec la totalité de user id a et b sont considérées par mysql comme 2 tables différentes
SELECT a.nom, a.nom
FROM btlec a, btlec b where a.nom=b.nom
plus rapide en calcul :
SELECT a.nom, b.nom
FROM btlec a
JOIN btlec b ON
a.nom=b.nom
jointure sur 2 vraies tables :
la liste des noms par services :
SELECT btlec.nom, services.full_name
FROM services
JOIN btlec
ON btlec.id_service = services.id
order by
services.full_name
astuce renommer arbitrairement les tables en l pour left et r pour right afin de mieux trouver le type de jointure adaptée
SELECT r.nom, l.full_name
FROM services l
JOIN btlec r
ON r.id_service = l.id
order by
l.full_name
si je veux toute la liste des noms btlec qu'ils soient ou non assignés à un service :
SELECT r.nom, l.full_name
FROM services l
RIGHT JOIN btlec r
ON r.id_service = l.id
order by
l.full_name
le nombre de compte btlec
select count(*) AS "nb user btlec" from btlec;
la quantité total de produits commandés pour une facture
select 'total", orderNumber, sum(quantityOrdered) from orderdetails where ordernumber= 10100;
la quantité total de produits commandés pour chaque facture
select 'total", orderNumber, sum(quantityOrdered) from orderdetails
group by orderNumber;
on veut la moyenne d'article commandé :
select avg(quantityOrdered) from orderdetails;
ensuite, on veut tout les lignes de produits commandés pour les quelle la quantité de produit est supérieure à cette moyenne
select orderNum, productCode, quantityOrdered from orderDetails where quantityOrdered >
(
select avg(quantityOrdered) from orderdetails;
)
order by ordernumber;
Avec in (sous requete renvoi plusieurs résultats)
SELECT *
FROM
msg table_msg
LEFT JOIN
replies table_replies
ON table_msg.id = table_replies.id_msg
WHERE table_replies.id_msg= :idMsg
AND
date_reply
IN (SELECT max(date_reply) FROM replies GROUP BY id_msg
UPDATE tbl AS a INNER JOIN tbl AS b ON .... SET a.col = b.col
https://youtu.be/FKSSOpQe5Jc http://csharp-video-tutorials.blogspot.fr/p/free-sql-server-video-tutorials-for.html
Fonction d'agrégation :
SELECT msg, sum(rep) FROM msg => erreur SELECT msg, sum(rep) FROM msg GROUP BY msg => ok
Filtrer : where ou having filtre avant agrégation SELECT msg, sum(rep) FROM msg WHERE msg='blue' GROUP BY msg filtre après SELECT msg, sum(rep) FROM msg GROUP BY msg HAVING msg='blue'