Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2011, 19h50   #1
Membre habitué
 
Inscription : octobre 2005
Messages : 640
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 640
Points : 140
Points : 140
Par défaut Commandes avec le nombre de lignes de commandes

Bonjour,

C'est un cas d'école... mais je sèche.
J'essaye de compléter la requête suivante pour récupérer le nombre de lignes de commandes d'une commande.
Code :
SELECT id, date FROM commande
à partir de ces 2 tables :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE `commande` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `date` datetime NOT NULL,
  PRIMARY KEY  (`id`)
);
CREATE TABLE `lignecommande` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `produit` varchar(20) NOT NULL,
  `nombre` int(10) UNSIGNED NOT NULL,
  `id_commande` int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (`id`),
  FOREIGN KEY (`produit`) REFERENCES `produit` (`ref`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  FOREIGN KEY (`id_commande`) REFERENCES `commande` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
);
Le but étant de n'exécuter qu'une seule requête... plutôt qu'une boucle horrible... optimisation, optimisation...
J'ai essayé d'imbriquer 2 SELECT avec un COUNT et DISTINCT mais impossible...
Pourriez-vous m'aider SVP ?

Merci d'avance !
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 20h44   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 433
Points : 10 433
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Tout est dans les tutoriels.

D'abord faire une jointure entre vos deux tables :
http://sqlpro.developpez.com/cours/sqlaz/jointures/

Puis faire un simple comptage :
http://sqlpro.developpez.com/cours/sqlaz/ensembles/

Citation:
Envoyé par Tchupacabra Voir le message
plutôt qu'une boucle horrible... optimisation, optimisation..
Vous avez parfaitement raison, mais on n'est pas dans l'optimisation, on est dans le concept le plus basique des bases de données, la jointure !
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 09h47   #3
Membre habitué
 
Homme Gaëtan
Développeur Oracle
Inscription : mai 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Homme Gaëtan
Localisation : France

Informations professionnelles :
Activité : Développeur Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2006
Messages : 117
Points : 115
Points : 115
Bonjour,

Je pense que vous voulez quelque chose comme ça

Code :
1
2
3
SELECT A.ID,date,COUNT(*) FROM COMMANDE A
INNER JOIN LIGNECOMMANDE B ON B.ID_COMMANDE =A.ID 
GROUP BY A.ID, date
Compter le nom de ligne de commande pour une commande
attila771 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h37.


 
 
 
 
Partenaires

Hébergement Web