Problème avec une requete SQL avec jointure!

Geekette1337 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Geekette1337 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous!

En fait, j'aurais une petite question sur un exercice que j'ai! J'essaie de me familiariser avec les requêtes SQL et je suis tombée sur ce problème:
Jai 2 tables. La premiere table sapelle magasin. Elle comporte les champs: id (int), nom (varchar; cest le nom du magasin), region(varchar) et employés (int). La deuxieme table s'apelle factures et elle comporte les champs: id(int), employeurs_id(int) et montant (int).
Le champ employeurs_id de la table factures correspond au champ id de la table magasin.

L'exercice me demande d'écrire une requête qui va donner, pour chaque facture, le numero de la facture et le nom du magasin concerné.

J'ai pensé faire:

SELECT factures.id, magasin.nom FROM factures, magasin WHERE factures.employeurs_id = magasin.id

Or, je ne pense pas que c'est bon..

Votre aide est vraiment appréciée! :)

4 réponses

barnabe0057 Messages postés 17074 Date d'inscription   Statut Contributeur Dernière intervention   4 926
 
Bonjour,
Ton prédicat de jointure (factures.employeurs_id = magasin.id) n'est pas bon, il faut utiliser un champ commun aux deux tables, le seul que je vois est le champ id.
0
Geekette1337 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai oublié de spécifier que dans le problèm, il est dit que la colonne factures.employeur_id fait reference a magasin.id

Est-ce que ca change quelque chose dans votre opinion?

Merci :)
0
barnabe0057 Messages postés 17074 Date d'inscription   Statut Contributeur Dernière intervention   4 926
 
Dans ce cas j'ai dit une bêtise, ta requête est exacte.
0
Geekette1337 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci :)

Derniere question. Dans le meme exercice. On me demande d'écrire une requete qui donne le nom de chaque magasin et la somme totale facturée à chaque magasin. (exemple, 5000 a ete facturé au magasin 1, 0 au magasin 2 etc..)

Voici ce que j'en ai deduis:

SELECT factures.employeurs_id, SUM(factures.montant) FROM magasin, factures WHERE factures.employeurs_id = magasin.id GROUP BY magasin.nom

En fait, ma question cest; est-ce que j'ai le droit de faire un GROUP BY magasin.nom meme si je n'ai pas mentionner magasin.nom dans la clause SELECT?
0
barnabe0057 Messages postés 17074 Date d'inscription   Statut Contributeur Dernière intervention   4 926
 
Tu ne peux pas faire un GROUP BY magasin.nom si magasin.nom n'est pas dans SELECT, d'ailleurs ta jointure n'aurait aucun sens puisque ton SELECT ne porte que sur une seule table.
0
Geekette1337 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Ah d'accord!

Est-ce que ca veut dire que je devrais faire:

SELECT magasin.nom, SUM(factures.montant) FROM magasin, factures WHERE factures.employeurs_id = magasin.id GROUP BY magasin.nom

Merci de bien vouloir m'aider :)
0