[MySQL/ SQL] Requête INSERT

Résolu/Fermé
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 - 18 févr. 2009 à 14:37
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 - 25 févr. 2009 à 10:53
Bonjour,

J'ai 3 tables :
IMPRIMANTE (num, ref_modele)
LOCALISER (#num_impr, #ref_secteur)
SECTEUR (ref_secteur, libelle_secteur)

LOCALISER est donc une association entre imprimante et secteur.

Comment doit se passer l'ajout d'une imprimante? Il faut mettre à jour également la table localiser, mais je ne sais pas comment faire.

Une requête INSERT pour la table IMPRIMANTE et une autre pour la table LOCALISER? Une seule requête pour la table IMPRIMANTE?

Je précise que dans PhpMyAdmin, mes tables sont de types InnoDB donc je devrais pouvoir gérer les relations...

Merci de m'aider!

Cordialement,
Sandrine
A voir également:

25 réponses

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 14:41
Vous insérez dans la table imprimante, puis vous insérer dans la table secteur et enfin vous faites une insertion dans la table localiser avec les deux valeurs qui vont bien, c'est à dire la valeur de "num" que vous avez mise en première insertion et la valeur de "ref_secteur" mise en deuxième insertion
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
18 févr. 2009 à 14:44
Salut,

Pour moi une insertion dans imprimante et une dans localisation.

Par contre je ne comprend pas trop la raison d'être de la table localisation.
Pourquoi par seulement IMPRIMANTE (num, ref_modele,#ref_secteur) ? sauf si une imprimante est 'associable' a plusieurs secteurs simultanément.
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
18 févr. 2009 à 14:58
Oui voilà une imprimante peut être assimilée à 2 secteurs. Ca paraît étrange mais si elle se trouve dans un couloir entre 2 secteurs, il faut qu'on puisse la retrouver dans les 2 secteurs par exemple...

Merci en tout cas à vous, mon problème est résolu.

Par contre j'ai un autre soucis....

Je voudrais rajouter un "détail de secteur" concernant une imprimante. C'est à dire que je voudrais savoir plus précisément où l'imprimante est située dans le secteur.

Exemple : l'imprimante X est dans le secteur A, plus précisément à l'endroit A1.

La table DETAIL serait donc rattachée à la table SECTEUR, mais dois-je la rattacher à la table IMPRIMANTE ?
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 15:10
non puisque votre table IMPRIMANTE est liée à la table SECTEUR par le biais de la localisation
0

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

Posez votre question
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
18 févr. 2009 à 15:11
D'accord mais dans ce cas là comment afficher le détail d'un secteur d'une imprimante?
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 15:16
il faudra récupérer le ou les secteur(s) par rapport au nom de l'imprimante en passant par la table localiser
puis pour chacun des résultats accéder au détail
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
18 févr. 2009 à 15:17
D'accord donc tout se fait grâce aux jointures dans la requête SQL si j'ai bien compris.

Merci beaucoup à toi.
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 15:19
Oui c'est en effet un système de jointures.

De rien
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
18 févr. 2009 à 16:38
Je reviens sur mon détail de secteur, je ne peux pas attribuer un détail de secteur à une imprimante.

Avec ma conception actuelle, j'attribue juste plusieurs détails de secteurs à un même secteur :
IMPRIMANTE (num, ref_modele)
LOCALISER (#num_impr, #ref_secteur)
SECTEUR (ref_secteur, libelle_secteur)
DETAILSECTEUR(Num, nom_detail,#ref_secteur)

Je pense qu'il me manque une clé étrangère, mais où ... ? -_-
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 16:40
Il faut que dans SECTEUR il y ait une clé étrangère vers DETAIL et non le contraire

malheureusement cela créer un problème de redondance pour ajouter plusieurs détails secteur à un seul secteur.

Je vous conseille de d'abord faire un schéma qui récapitule vos liens entre tables afin de savoir réellement ce dont vous avez besoin et non de rajouter des éléments au fur et à mesure.
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
18 févr. 2009 à 16:42
Un SECTEUR peut avoir un ou plusieurs DETAIL
Un DETAIL appartient à un et un seul SECTEUR.

La règle est donc de mettre la clé étrangère dans DETAIL, non?
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 16:48
oui

sauf que là il faut que vous repreniez du début et que vous notiez toutes les interactions entre les tables avant de décider si vos tables sont logiques, s'il ne faut pas ajouter des tables de liaisons (comme LOCALISER) etc.
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
18 févr. 2009 à 16:51
Désolé je n'ai pas compris là...

Tu pense qu'il faudrait que j'ajoute d'autres associations?

Quelle serait la conception adéquate pour pouvoir gérer le détail d'un secteur d'une imprimante?...
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 févr. 2009 à 17:01
Bien résumons:

Une imprimante peut avoir plusieurs secteurs
Un secteur peut avoir plusieurs imprimantes
Un secteur peut avoir plusieurs détails secteur
Une imprimante a un seul détail secteur

est-ce que ces règles sont correctes, y'en a-t-il d'autres?

(c'était ma question même si elle n'était pas très bien formulée :) )
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
19 févr. 2009 à 09:11
Non c'est tout ^^.
Bon en fait je pense avoir trouver : LOCALISER devient une asso ternaire avec reliées à elle : Imprimante, Secteur, et Détail Secteur.

Comme ça je pense pouvoir retrouver le détail secteur d'une imprimante...?
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
19 févr. 2009 à 09:18
mmais comme un détail secteur appartient à un seul secteur, si on connaît le détail secteur de l'imprimante, on connaît aussi son secteur, donc tu peux enlever secteur de la table LOCALISER, il sera retrouvé grâce à ta clé étrangère entre secteur et détailsecteur :)
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
19 févr. 2009 à 09:34
Tu peux me faire un schéma rapide de ce que tu viens de m'expliquer stp??

...Ce sujet me donne des sueurs froides -_-
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
19 févr. 2009 à 10:00
IMPRIMANTE (num, ref_modele)
LOCALISER (#num_impr, #ref_detailsecteur)
SECTEUR (ref_secteur, libelle_secteur)
DETAILSECTEUR(ref_detail, libelle_detail, #ref_sect)

comme tu vois un détail secteur n'ayant qu'un seul secteur, il suffit de donner à l'imprimante son détailsecteur pour qu'elle connaisse son secteur.

Exemple:

imprimante X, détailsecteur A1

et on sait que détailsecteur A appartient à secteur A

donc imprimante appartient à secteur A et plus exactement au détailsecteur A1
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
19 févr. 2009 à 10:58
J'ai fais comme ça, et ça à l'air de marcher ^^

Un grand merci à toi pour ta patience =D

Je reposterais si jamais je rencontre un soucis.

A+!!
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
19 févr. 2009 à 11:00
Bonne continuation.
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
23 févr. 2009 à 15:21
Encore un petit soucis!

J'ai donc ces 3 tables :

IMPRIMANTE(num)
LOCALISER (num_impr, num_detail)
DETAILSECTEUR(num, nom_detail)

Une imprimante est localisée dans aucun ou plusieurs détails secteur,
Un détail secteur localise une ou plusieurs imprimantes.

Lorsque je veux ajouter une imprimante qui n'a pas de détail secteur, MySQL me renvoi une erreur puisqu'il faut absolument une valeure dans num_detail de la table LOCALISER.

Comment faire pour ajouter une imprimante qui n'a pas de détail secteur, sachant que j'ai mis detailsecteur comme entier, autoincrément ?
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 févr. 2009 à 15:23
Tu ne dois pas pouvoir car normalement le détail secteur est la clé primaire de ta table detailsecteur donc elle ne peut pas être à null...
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
23 févr. 2009 à 15:24
Et oui, mais dans ce cas là je ne peux pas faire en sorte qu'une imprimante n'ait pas de détail secteur ?
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 févr. 2009 à 15:30
enfin je comprend pas déjà dans la logique comment une imprimante peut appartenir à aucun détail secteur.
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
23 févr. 2009 à 15:35
Oui je suis un peu bloquée par rapport à la conception qu'on a vu précédemment, qui me convenait très bien jusqu'à maintenant :

IMPRIMANTE (num, ref_modele)
LOCALISER (#num_impr, #ref_detailsecteur)
SECTEUR (ref_secteur, libelle_secteur)
DETAILSECTEUR(ref_detail, libelle_detail, #ref_sect)

En fait ça revient à dire qu'une imprimante est rattachée à un détail secteur qui appartient à un secteur. Alors que normalement elle est rattachée à un secteur.
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 févr. 2009 à 15:43
Sauf que si vous la rattachez à un secteur, vous ne pouvez pas la rattacher à un détailsecteur sachant que le secteur a plusieurs détailsecteur.

Ou alors vous la rattachez à un secteur et à un détail secteur, dans quel cas il y aura des doublons mais ça devrait marcher.
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
23 févr. 2009 à 16:29
Bonjour,

avec une seule table, c'est gérable aussi, il suffit d'ajouter un champ "type" dans lequel on mettra IMPRIMANTE, LOCALISER, SECTEUR ou DETAILSECTEUR

Ensuite, il suffit d'ajouter les champs déjà mis plus haut : num, ref_modele, ref_secteur, libelle_secteur, ref_detail et libelle_detail. Et à chaque enregistrement, remplir tous les champs nécessaires via le formulaire.
Le listage se fera grace au champ "type". :)
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
23 févr. 2009 à 16:52
Ca ne me parait pas très normalisé...
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 févr. 2009 à 17:13
Il y aura beaucoup trop de doublons en effet, mon idée en aura moins mais il en restera, cependant je pense que c'est le mieux.
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95 > NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013
23 févr. 2009 à 17:25
Qu'est-ce que tu appelles "doublons" ? Le fait d'avoir par exemple souvent IMPRIMANTE comme valeur du champ "type" ?

Sandrine >> Entre lister (par exemple) tous les éléments de la table IMPRIMANTE ou lister tous les éléments d'une même table dont le type est IMPRIMANTE, je ne vois pas vraiment la différence, on se casse juste moins la tête avec les "croisements de tables", en utilisant ma méthode. ^^
(Je l'utilise pour l'un de mes projets et c'est très efficace)
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513 > Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016
23 févr. 2009 à 17:30
Ah en fait j'ai pas compris ce que vous proposez.
Le champ type se trouve dans quel table exactement :s
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
23 févr. 2009 à 17:44
En gros, il n'y a plus qu'une seule table dans laquelle tous les enregistrements sont faits.

Par exemple, la table "general" regroupe les données des 4 tables précédentes :
IMPRIMANTE, LOCALISER, SECTEUR et DETAILSECTEUR

On met les champs principaux (ceux qu'il faut vraiment renseigner) au lieu d'indiquer dans chaque table la référence correspondant à l'enregistrement dans les autres.
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 févr. 2009 à 17:48
Ah ben si y'aura bien un problème de doublons dans le sens qu'on aura

ImprimanteX secteurA détailsectA1
ImprimanteX secteurA détailsectA2
ImprimanteX secteurC détailsectC1

etc...

puisqu'une imprimante peut avoir plusieurs secteurs et plusieurs détails secteur. On a donc une prise de mémoire trop importante.
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
23 févr. 2009 à 17:56
On peut toujours mettre une condition s'il existe plusieurs cas de "ImprimanteX et secteurA" en comptant le nombre d'enregistrements, afin de les regrouper.

Par exemple une seconde requête va regarder s'il en existe plusieurs et si oui les listera.
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
23 févr. 2009 à 22:56
ça ne changera pas le fait qu'il y aura une perte de mémoire :s
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95 > NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013
23 févr. 2009 à 23:21
Je ne faisais que proposer.
Perte de mémoire, possible, mais si peu... Et c'est moins casse-tête ! ^^
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513 > Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016
24 févr. 2009 à 08:48
ça dépend du nombre de données traitées, de plus c'est un mauvais modèle de conception, peu évolutif.
0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 607 > NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013
24 févr. 2009 à 08:53
Totalement mauvais oui, comme disait Sandrine, pas normalisé.

Il y a des méthodes, des règles pour avoir une structure organisée, évolutive et pas gourmande en ressources, autant les respecter.

0
HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 607 > Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016
24 févr. 2009 à 09:05
"si peu" : donc incompatible avec une augmentation conséquente du volume de données, ce qui impliquerait une refonte de toute l'organisation de la base. Et ça, ce n'est pas envisageable, quand on a les moyens de faire en sorte que la structure soit évolutive.

C'est un peu comme si tu avais à gérer des employés de différentes entreprises. La logique de l'analyse voudrait qu'il y ait une table "employes" en relation avec une table "entreprises". Il est certes possible de ne faire qu'une table "employes" avec comme champs les détails de l'entreprise. Ce n'est pas normalisé (même pas 1FN je crois), mais ça marche. Sauf que le jour où les données montent en flèche et atteignent plusieurs milliers d'employés dans ta table... déjà, elle sera énorme du fait d'avoir employés et entreprises dans la même... mais surtout, le jour où une entreprise change de dénomination : tu te vois mettre à jour plusieurs milliers de lignes dans ta table ?

0