Besoin d'aide: langage SQL

Pinklady.

New Member
Bonsoir,
Pour le langage SQL, il faut que les tables soient reliées par une clé primaire ou clé étrangère de l'autre table pour pouvoir écrire
and A.CODEAUTEUR=O. CODEAUTEUR
and O. CODEAUTEUR=M.CODEMATIERE
Je crois que je ne peux pas écrire la dernière ligne :and O. CODEAUTEUR=M.CODEMATIERE, puisque:
OUVRAGE(Code ouvrage, Titre ouvrage, Tirage, Pric Public HT, # code matière, # Code auteur)
MATIERE(Code Matière, Nom Matière)> il n' y a pas de lien entre la table OUVRAGE et MATIERE, puisque la table MATIERE ne présente pas de CODE AUTEUR.

ou à moins que je fait le lien avec la clé étrangère # Code Matière de la table OUVRAGE
Peut-on écrire cela:
and A.CODEAUTEUR=O. CODEAUTEUR
and O. CODEMATIERE=M.CODEMATIERE

Merci de m'expliquer :mellow:
 

moime

Best Member
Pinklady. link=topic=93222.msg1065689#msg1065689 date=1229623363 a dit:
Bonsoir,
Pour le langage SQL, il faut que les tables soient reliées par une clé primaire ou clé étrangère de l'autre table pour pouvoir écrire
and A.CODEAUTEUR=O. CODEAUTEUR
and O. CODEAUTEUR=M.CODEMATIERE
Je crois que je ne peux pas écrire la dernière ligne :and O. CODEAUTEUR=M.CODEMATIERE, puisque:
OUVRAGE(Code ouvrage, Titre ouvrage, Tirage, Pric Public HT, # code matière, # Code auteur)
MATIERE(Code Matière, Nom Matière)> il n' y a pas de lien entre la table OUVRAGE et MATIERE, puisque la table MATIERE ne présente pas de CODE AUTEUR.
Avant de faire les liens il faut comprendre le contenu de chacune des tables, dans ta table auteur tu vas avoir les infos concernant les auteurs (numéor ou code auteur, son nom..adresse..)
dans la talbe ouvrage les renseignements concernant le l'ouvrage : son code, son titre et le code de son auteur qui permet en allant dans la table auteur d'avoir les informations sur l'auteur, et le code de la matière que traite l'ouvrage (qui permet en allant dans la table matière de trouver le nom de la matière donc tu as deux jointures : entre ouvrage et auteur sur le code auteur
et entre ouvrage et matière sur le code matière...

ou à moins que je fait le lien avec la clé étrangère # Code Matière de la table OUVRAGE
Peut-on écrire cela:
and A.CODEAUTEUR=O. CODEAUTEUR
and O. CODEMATIERE=M.CODEMATIERE

Merci de m'expliquer  :mellow:
les jointures doivent se faire sur le même contenu, donc codeauteur dans une table doit correspondre au codeauteur dans une autre et code matière dans l'une doit correspondre au code matière dans l'autre
 

Pinklady.

New Member
Merci moime de m'expliquer.  :blush:

moime link=topic=93222.msg1065692#msg1065692 date=1229623757 a dit:
donc tu as deux jointures : entre ouvrage et auteur sur le code auteur et entre ouvrage et matière sur le code matière...

Donc a priori, ma deuxième réflexion est correcte, non?

Pinklady. link=topic=93222.msg1065689#msg1065689 date=1229623363 a dit:
and A.CODEAUTEUR=O. CODEAUTEUR
and O. CODEMATIERE=M.CODEMATIERE

Autre question: a quoi sert le regroupement GROUP BY. Il est noté qu'il permet de faire porter les fonctions d'agrégat sur des partitions de la table. Comprend pas :mmmhh:
 

patrice084

Best Member
Pinklady. link=topic=93222.msg1065699#msg1065699 date=1229624401 a dit:
Autre question: a quoi sert le regroupement GROUP BY. Il est noté qu'il permet de faire porter les fonctions d'agrégat sur des partitions de la table. Comprend pas :mmmhh:
Cela permet de faire des regroupements. Par exemple vous souhaitez faire la somme des CA mais par vendeurs

SELECT vendeur,ca,ville SUM(CA)
FROM ventes
GROUP BY vendeur
 

moime

Best Member
Patrice084 link=topic=93222.msg1065703#msg1065703 date=1229624850 a dit:
Cela permet de faire des regroupements. Par exemple vous souhaitez faire la somme des CA mais par vendeurs

SELECT vendeur,ca,ville SUM(CA)
FROM ventes
GROUP BY vendeur
de mémoire tout les champs non calculés qui sont dans le select doivent figurer dans le regroupement sinon message d'erreur..il faut que je vérifie!
 

patrice084

Best Member
moime link=topic=93222.msg1065709#msg1065709 date=1229625249 a dit:
de mémoire tout les champs non calculés qui sont dans le select doivent figurer dans le regroupement sinon message d'erreur..il faut que je vérifie!

Possible, je ne suis pas encore un as du SQL :smile:
 

Pinklady.

New Member
moime link=topic=93222.msg1065709#msg1065709 date=1229625249 a dit:
de mémoire tout les champs non calculés qui sont dans le select doivent figurer dans le regroupement sinon message d'erreur..il faut que je vérifie!

Cela se présenterait alors ainsi:

SELECT vendeur,ca,ville SUM(CA)
FROM ventes
GROUP BY vendeur, ca,ville SUM(CA)

Non??
 

moime

Best Member
Patrice084 link=topic=93222.msg1065717#msg1065717 date=1229626711 a dit:
Possible, je ne suis pas encore un as du SQL  :smile:
moi je suis un A... le S est encore loin, mais ayant fait des modes opératoires d'open office base, j'avais constaté qu'il faut ajouter tous les champs affichés dans le regroupement (access le fait automatiquement en mode QBE) , et je crois avoir lu qu'il faut obligatoire le faire ..
j'avais fais ça il y a quelques mois
http://www.cfe.free.fr/oo/requetes_avances/
 

vestale974

Well-Known Member
moime link=topic=93222.msg1065709#msg1065709 date=1229625249 a dit:
... de mémoire tout les champs non calculés qui sont dans le SELECT doivent figurer dans le regroupement
Très bonne mémoire d'éléphant as-tu ! :moke:
C'est la règle en SQL (de SQL1 à SQL3) et dans HAVING on y ajoute les champs calculés
 

Ca peut vous intéresser