Problème avec une requete SQL avec jointure!

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

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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 :)
      1. Dans ce cas j'ai dit une bêtise, ta requête est exacte.
    2. 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?
      1. 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.
    3. 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 :)