PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/07/2012 16:03:23

hmahe44
Membre

création de ligne due à l'entrée d'une valeur dans un champs

Bonjour à tous,

Je voulais savoir si via postgres on pouvait faire ceci :

Si dans une table A on un champs=x alors dans la table B on a création de x lignes!

Et si oui quelle ligne de commande sous le panneau SQL le permet!

Merci

Hors ligne

#2 06/07/2012 16:15:22

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

Une fonction pour faire ça je pense, mais c'est pas vraiment compréhensible ce que vous dites.

Hors ligne

#3 06/07/2012 16:17:06

rjuju
Administrateur

Re : création de ligne due à l'entrée d'une valeur dans un champs

Bonjour,
votre demande n'est pas très claire.
A tout hasard, une requête du genre pourrait vous aider :
INSERT INTO b (colonne) SELECT champ, ... FROM a;

Hors ligne

#4 06/07/2012 16:29:08

hmahe44
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

@rjuju : désolée que mes explications ne soient pas très claires...alors je ne veux pas insérer des données mais créer des lignes, je vais donner un exemple plus précis :
j'ai crée une table "echantillonnage" qui contient un champ "nombre de mammifère", c'est un champ numéric.
A cette table est relier une autre table "mammifère" qui contiendra tous les mammifères ( un id par mammifère) ainsi que leur espèce, stade...
Je voudrai que quand nb_mam=6 dans la table echantillonnage alors 6 lignes (6 id) soient automatiquement créer dans la table "mammifère"

Suis je un peu plus plus clair?

Hors ligne

#5 06/07/2012 16:38:49

flo
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

C'est plus compréhensible.
Mais quel est l'intérêt de créer des lignes dans la table "mammifère"? Quelles valeurs voulez-vous mettre dans ces lignes au moment où vous les créez ?

Hors ligne

#6 06/07/2012 16:42:25

hmahe44
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

Quel intéret : éviter de devoir créer 10000 lignes à la mains et pour que la commande le fasse d'elle même!
Pour les valeurs, on veut attribuer un numéro à chaque mammifère!

Hors ligne

#7 06/07/2012 16:46:11

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

vous êtes pas en train de réfléchir à l'envers ?

en fait vous voulez connaitre le nombre de mammifères dans une table et le détail dans une autre non ?

donc faire une fonction qui fait un count(*) en faisant l'insert dans échantillonnage non ?

Hors ligne

#8 06/07/2012 16:48:34

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

ok vu votre réponse oubliez ce que j'ai mis plus haut , l'insertion ds nb_mam se ferait comment ?

Dernière modification par kenrio (06/07/2012 16:48:49)

Hors ligne

#9 06/07/2012 16:50:20

hmahe44
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

Le nombre de mammifère est dans la table échantillonnage et je veux le détail dans la table mammifère
c'est possible avec la clause COUNT?

Hors ligne

#10 06/07/2012 16:52:46

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

non, je pensais à l'inverse moi mais c'est pas ce que vous recherchez.

Le truc que j'aimerais savoir c'est comment vous remplissez vos tables ?

Hors ligne

#11 06/07/2012 16:54:07

hmahe44
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

nb_mam est déjà renseigner et je veux qu'en fonction des valeurs les lignes soient créées dans la table mammifère

Hors ligne

#12 06/07/2012 16:58:04

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

votre table échantillonnage sera pleine mais la table mammifère vide ?
Si c'est ça, je fais une procédure stockée, qui quand je la lance regarde le nombre de mammifère et insert le nombre de ligne avec une boucle et donc tous les autres champs vide ou avec un default.
mais c'est un oneshot par contre

Dernière modification par kenrio (06/07/2012 16:58:30)

Hors ligne

#13 06/07/2012 16:59:27

hmahe44
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

Oui c'est ca...par contre je débute..procédure stockée?

Hors ligne

#14 06/07/2012 17:22:52

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

une fonction, la doc de postgresql : http://www.postgresql.org/docs/9.1/stat … ction.html

y a peut être une meilleure façon ou plus simple mais je vois pas trop

Hors ligne

#15 06/07/2012 18:00:51

flo
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

kenrio a écrit :

votre table échantillonnage sera pleine mais la table mammifère vide ?
Si c'est ça, je fais une procédure stockée, qui quand je la lance regarde le nombre de mammifère et insert le nombre de ligne avec une boucle et donc tous les autres champs vide ou avec un default.
mais c'est un oneshot par contre

Cela n'a aucun sens de créer des lignes vides. Ou même juste avec un identifiant (une clé primaire).
J'ai vraiment l'impression qu'on met la charrue avant les boeufs : on cherche une solution à un problème technique tordu pour résoudre un problème réel qu'on ne connaît pas. ("on" = les personnes qui essaient d'aider)

hmahe44, pourquoi voulez-vous faire cela?
Et comment sera remplie la table "mammifere"? (à quel moment, et à partir de quelles données?).


Tant que vous ne répondrez pas à ces questions, nous allons tourner en rond, proposer des solutions complexes que vous aurez du mal à mettre en oeuvre et qui ne répondront pas, ou mal, à votre besoin.

Vous êtes débutante apparemment, ce qui explique que vous ne voyiez pas en quoi c'est tordu d'utiliser la base de cette manière. Il n'y a rien de mal à cela, mais s'il vous voulez qu'on vous aide, répondez à toutes les questions qu'on vous pose. Vous n'avez pas répondu à ma question de tout à l'heure.

Et faites attention également à mettre des points à la fin des phrases, et des majuscules au début : cela rend la lecture nettement plus facile. Merci.

Dernière modification par flo (06/07/2012 18:09:47)

Hors ligne

#16 06/07/2012 18:13:33

kenrio
Membre

Re : création de ligne due à l'entrée d'une valeur dans un champs

après a la place de null ou de default il peut mettre un serial, qui représentera le numéro de l'animal.
Mais oui on connait rien à la problématique...

en plus de la question de flo  : y a t il une interface devant la base ?

Dernière modification par kenrio (06/07/2012 18:15:13)

Hors ligne

#17 07/07/2012 14:19:54

rjuju
Administrateur

Re : création de ligne due à l'entrée d'une valeur dans un champs

Tout dépend de la volumétrie finale, mais je pense que votre table echantillonage n'a pas de raison d'être. C'est juste le résultat d'un select count(id) from mammifere. Vous pouvez le stocker dans une vue si vous voulez, mais le garder en valeur calculée est sans doute beaucoup plus simple.

Comme le dit flo, c'est très vague. Avez-vous fait un mcd pour votre besoin ? Cela pourrait nous aider.

Hors ligne

Pied de page des forums