Problème avec une requete SQL avec jointure!

Fermé
Geekette1337 Messages postés 5 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011 - 28 janv. 2011 à 17:23
Geekette1337 Messages postés 5 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011 - 28 janv. 2011 à 19:05
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! :)
A voir également:

4 réponses

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié par barnabe0057 le 28/01/2011 à 17:59
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 5 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 18:29
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 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
28 janv. 2011 à 18:42
Dans ce cas j'ai dit une bêtise, ta requête est exacte.
0
Geekette1337 Messages postés 5 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 18:47
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 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
28 janv. 2011 à 18:55
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 5 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 19:05
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