Besoin d'aide urgent pour une requête SQL

Fermé
Alex - 22 janv. 2009 à 11:32
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 - 22 janv. 2009 à 12:46
Bonjour,


J'ai 2 Tables publications et auteurs et je veux ajouter des champs dans la table publications où on trouve les Id_auteurs des auteurs qui ont participé à la publication.

TABLE publications

Id_article Nom_Auteurs
1 NOM1, NOM2, NOM3
2 Nom4, NOM5

TABLE auteurs

Id_auteur Nom
1 Auteur1
2 Auteur2
3 Auteur3
4 Auteur4
5 Auteur5

Je vous remercie de votre aide.

9 réponses

nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 11:40
Salut déjà tu devrai plutot faire 3 tables

Une pour les articles :

Id_article | Titre Article
art1 | TITRE1
art2 | TITRE2

une table auteurs

Id_auteur | Nom
aut1 | Auteur1
aut2 | Auteur2
aut3 | Auteur3
aut4 | Auteur4
aut5 | Auteur5

Et une table de liaison (je reprends ton exemple pour l'explication)

Id_article | Id_auteur
art1 | aut1
art1 | aut2
art1 | aut3
art2 | aut4
art2 | aut5

Voilà pour un vraie conception base de données.

Pour une explication :

1 article peut avoir 1 ou plusieurs auteurs.

1 auteurs peut avoir écris 0 ou plusieurs articles.

Tu as donc un relation de type n-m qui nécessite une table intermédiaire de liaison.
0
Salut,

MErci pour ta réactivité!!! ;)
Les tables sont déja créés et je ne peux pas les modifier mais l'idée de la 3ème table me plaît mais je ne sais pas comment la programmer.

Thanks.
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 11:50
regarde le CREATE TABLE pour la sql de création.

Pour les modifications de table : ALTER TABLE
0
Je sais comment créer une Table mais je sais pas remplir les champs (je suis encore débutant).
0
Tu créer ta base sous mysql ???
0
Oui je l'ai créé sur MySQL.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je pense que déja tu devrais avoir 3 tables C'est a dire :

AUTEUR (Num_auteur, Nom_auteur)
PUBLICATION (Num_Publication, Libelle_publication)
PARTICIPER (#Num_publication, #Num_auteur)


Et après si tu veux ajouter un champ dans la table PUBLICATION, tu clik à gauche sur publication et ensuite tu verras la table qui va s'apparaitre. Juste en dessous tu auras "Ajouter 1 champs" (après il y a "en fin de table" "...") tu clik dessus et tu pourra ajouter les champs.
0
Oui je sais faire ça mais mon problème c'est la requête pour remplir les champs dans la table PARTICIPER.
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608 > Alex
22 janv. 2009 à 12:22
C'est au niveau du fond (la commande pour insérer des données (INSERT INTO pour info)), ou au niveau de la forme ?

0
Alex > HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016
22 janv. 2009 à 12:25
La table publications contient plus que 700 publications donc je peux pas le faire à la main, j'ai besoin d'une requête qui fait l'insertion automatiquement.
0
Ah ok, ben tu fais

INSERT INTO PARTICIPER VALUES('Num_publication','Num_auteur',);

Il faut que ca soit des chiffres
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
22 janv. 2009 à 12:26
Du coup, les quotes sont inutiles ;-)

0
Dans la table j'ai plus que 700 publications et j'ai plus que 1500 auteurs donc je dois faire une requête qui le fait automatiquement.

Merci encore ;)
0
Il faut que ca soit des chiffres qui sont déja existants. C'est à dire, Num_publication doit exister dans la table publication et pareil pour auteurs.
0
T'as 700 auteurs et 1500 publications.. Done moi les champs de tes tables stp. Ainsi que les clé étrangère parce que je pense que je m'embrouille là.. loool
0
Je vais te reformuler le problème c mieux ;)

J'ai 2 tables déja créés Artciles et auteurs

Id_article | auteurs
1 | NOM1, NOM2,NOM3
2 | NOM4, NOM5

une table auteurs

Id_auteur | Nom
1 | NOM1
2 | NOM2
3 | NOM3
4 | NOM4
5 | NOM5

Je dois créer la table suivante

Id_article | Id_auteur
1 | 1
1 | 2
1 | 3
2 | 4
2 | 5
Pour le faire, je pense qu'il faut :
-créer la nouvelle tablle.
-Faire une requête qui prend l'Id-article de la table artciles et le met dans Id_article de la nouvelle table.
-Puis prendre le Nom de la table auteur et vérifie si ce nom existe dans les auteurs de la publication (champs auteurs de la table publication). Si c'est le cas on met son ID dans Id_auteur de la nouvelle table.
-Et on continue comme ça jusqu'à la fin.

J'espère que c'est plus clair maintenant ;)
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608 > Alex
22 janv. 2009 à 12:46
A mon avis, tu vas devoir passer par un script pour faire le traitement autour de tout ça, peu importe le langage.

0
Ben en tout tu as 4 tables non ??? Article, publication, auteur et participer non ???

Mais moi je pense que malheureusement tu dois inserer tout toi même. Enfin si tu peu envoi moi toutes tes tables. Je comprendrais mieux
0