Last active
November 9, 2016 17:55
-
-
Save jhroy/21acbdf067adc6721b20fbb8aabe020a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- requêtes sur une base de données que vous pouvez intégrer dans MySQL à partir d'ici: | |
-- http://bit.ly/sqlsaq2 | |
select * | |
from inv; | |
select * | |
from inv | |
where Quantité > 4000; | |
select * | |
from inv | |
where Quantité >999 and Quantité <1999; | |
select * | |
from prod | |
where pays = "France"; | |
select * | |
from prod | |
where pays = "France" or pays = "Canada"; | |
select * | |
from prod | |
where pays in ("France","Italie"); -- Équivalent de la commande précédente | |
select * | |
from prod | |
where pays <> "France" and pays <> "Canada"; | |
select * | |
from prod | |
where type = "vin"; | |
select * | |
from prod | |
where type like "vin%"; | |
select * | |
from prod | |
where type like "%vin"; | |
select * | |
from prod | |
where type like "%vin%"; | |
select * | |
from prod | |
where année = 1995; | |
-- Jusqu'ici, les commandes pouvaient toutes être faites dans l'onglet «Contenu» de Sequel Pro | |
select *, sum(quantité) | |
from inv | |
group by numprod; | |
select numprod, sum(quantité) | |
from inv | |
group by numprod; | |
select ville, sum(ville) | |
from succ | |
group by ville; -- Ne marche pas! | |
select ville, count(ville) | |
from succ | |
group by ville; | |
select pays, count(pays) as nb | |
from prod | |
group by pays | |
order by nb desc; | |
select prod.pays, count(prod.pays) as nb | |
from prod | |
group by prod.pays | |
order by nb desc; | |
-- La plus puissante commande: JOIN | |
select * | |
from inv | |
join succ | |
on inv.numsucc=succ.numéro; | |
select * | |
from inv | |
join prod | |
on inv.numprod=prod.numéro; | |
select succ.nom, succ.adresse, succ.ville, succ.bannière, sum(inv.quantité) as total | |
from inv | |
join succ | |
on inv.numsucc=succ.numéro | |
group by succ.nom | |
order by total desc; | |
select prod.nom, prod.type, prod.pays, sum(inv.quantité) as total | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
group by prod.nom | |
order by total desc; | |
-- Ne marche pas: | |
select prod.Nom, prod.Type, prod.Pays, sum(inv.quantité) as Total, sum(prod.volume) as "Volume total", round(sum(prod.prix),2) as Valeur | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
group by prod.nom | |
order by Valeur desc; | |
select prod.Nom, prod.Type, prod.Pays, sum(inv.quantité) as Total, (sum(inv.quantité)*prod.Volume) as "Volume total", round((sum(inv.quantité)*prod.prix),2) as Valeur | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
group by prod.Nom -- ou prod.Type ou prod.Pays | |
order by Valeur desc; | |
-- Ne marche pas, pourquoi (pcq produits ont tous même prix, ce qui n'est pas le cas des types ou des pays): | |
select prod.Nom, prod.Type, prod.Pays, sum(inv.quantité) as Total, (sum(inv.quantité)*prod.Volume) as "Volume total", round((sum(inv.quantité)*prod.prix),2) as Valeur | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
group by prod.Type -- ou prod.Pays | |
order by Valeur desc; | |
-- Regrouper les 3 tables | |
select * | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
join succ | |
on inv.numsucc=succ.numéro; | |
select *, round((inv.quantité*prod.prix),2) as Inventaire | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
join succ | |
on inv.numsucc=succ.numéro | |
order by Inventaire desc; | |
select *, round((inv.quantité*prod.prix),2) as Inventaire, round((inv.quantité*prod.volume),0) as VolumeTotal | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
join succ | |
on inv.numsucc=succ.numéro | |
order by VolumeTotal desc; | |
-- Sous-requête pour trouver l'inventaire total par succursale | |
select numsucc, sum(Inventaire) as InvTotal, succ.nom, succ.adresse from | |
( | |
select *, round((inv.quantité*prod.prix),2) as Inventaire | |
from inv | |
join prod | |
on inv.numprod=prod.numéro | |
) as trumpenormement -- il faut donner un alias à une sous-requête et on peut choisir n'importe quoi comme nom de variable | |
join succ | |
on succ.numéro=numsucc | |
group by numsucc | |
order by InvTotal desc; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment