[ACCESS] Remplir une table avec résultat requ

Fermé
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 - 5 mars 2007 à 16:27
 rhita - 5 févr. 2008 à 15:47
Bonjour,

Je dois réussir à ajouter un champ dans une table à partir du résultats de plusieurs requetes. Je possède 3 tables dans ma BD.
SESSION (Idsession, Nsession, datesession, codecat)
LOGAPP(Nlog, Id log, heurelog, descriptionlog...)
CATEGORIE(Codecat, libellecat)

Avec les relations suivantes
SESSION.Idession=LOGAPP.Idlog
SESSION.Codecat=CATEGORIE.Codecat

Un unique SESSION.Idsession comprend plusieurs LOGAPP.Nlog
SESSION.Codecat reprend le code de la categorie des sessions

Le champ SESSION.Codecat est vierge, je viens de le rajouter. Je souhaite pouvoir remplir le champ SESSION.Codecat avec les résultats d'une requete portant sur les tables SESSION et LOGAPP. La requete fournit la liste des SESSION.Idsession comportant les caractères *;CC* dans LOGAPP.Descriptionlog.

Comment faire ?
Merci d'avance
A voir également:

13 réponses

blux Messages postés 26819 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 avril 2025 3 335
5 mars 2007 à 16:39
Salut,

pour mettre à jour un champ :

UPDATE nom_table SET nom_champ = valeur WHERE condition ;
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
6 mars 2007 à 14:24
Merci, c'est super, ça marche !!!

2eme question

J'ai une requete de création de la table SESSION tel que :
SELECT LOGAPP.IDLOG, LOGAPP.DATELOG INTO [SESSION]
FROM LOGAPP
GROUP BY LOGAPP.IDLOG, LOGAPP.DATELOG;

Je pense qu'il est possible de définir dans cette requête la clé primaire de la table SESSION ainsi que la relation entre la table SEESION et LOGAPP:

SESSION.NSESSION primary key en numéroauto
SESSION.IDSESSION=LOGAPP.IDLOG

Comment faire ?

Merci par avance
0
blux Messages postés 26819 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 avril 2025 3 335
6 mars 2007 à 14:45
Quand tu fais SELECT INTO, les champs de la table cible héritent des propriétés des champs de la table source...

Il est autrement plus intéressant de créer la table avec ses relations, puis de la remplir avec INSERT INTO..., quitte à la nettoyer si tu veux remettre d'autres données après (DELETE * FROM table)

Mais tu peux toujours créer des contraintes après ton SELECT INTO, c'est l'ordre CONSTRAINT (pour les relations) ou CREATE INDEX ... WITH PRIMARY pour la clé primaire
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
6 mars 2007 à 15:01
Je comprend pas bien l'histoire de creer la table avec ses relations puis de la remplir, c'est à dire ?

En considérant le deuxième solution, que devient alors ma requete ?

SELECT LOGAPP.IDLOG, LOGAPP.DATELOG INTO [SESSION]
CREATE INDEX SESSION.IDSESSION WITH PRIMARY CONSTRAINT SSESION.IDSESSION=LOGAPP.IDLOG
FROM LOGAPP
GROUP BY LOGAPP.IDLOG, LOGAPP.DATELOG;

ça semble louche ? c'est bon comme ça ?...j'ose pas essayer
0

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

Posez votre question
blux Messages postés 26819 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 avril 2025 3 335
6 mars 2007 à 15:40
Non, tu crées une table avec l'assistant ACCESS, et ensuite elle vit ce qu'elle doit vivre : tu la remplis ou tu la vides au gré de tes humeurs...
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
6 mars 2007 à 15:45
Ce n'est pas ce que je recherche, je souhaite la créer a partir du réultat d'une requete, Acces appelle cela une requete de création.

Donc comment je peux rédiger cette requete ?
0
blux Messages postés 26819 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 avril 2025 3 335
6 mars 2007 à 15:49
Vois mon message 3...

Tu créés une table avec des valeurs par défaut et pas de relations, ensuite tu créés les relations... mais attention aux contraintes d'intégrité...
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
6 mars 2007 à 15:59
Je voudrais pouvoir faire tout cela en une seule requête (pour pouvoir faire un macro)...un requête qui fait
1. selection dans la table LOGAPP
2. création d'une nouvelle table SESSION qui contient les champs SESSION.IDSESSION=LOGAPP.IDLOG, SESSION.DATESESSION=LOGAPP.DATELOG,
NSESSION (AutoNumber)
3. définir IDSESSION comme primary key
4. définir la relation SESSION.IDSESSION=LOGAPP.IDLOG avec intégrité ref.

Je ne souhaite pas créee une table manuellement puis la remplir en suite puis definir la clé, pusi la relation. Je voudraais réaliser cela en une seule requête pour les futurs macros.

Comment rédiger ma requête ?

Merci pour votre compréhesion...
0
blux Messages postés 26819 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 avril 2025 3 335
7 mars 2007 à 08:58
On ne peut pas créer une table en la remplissant et définir ses propriétés en même temps via des requêtes...
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
8 mars 2007 à 17:42
ok, je laisse tomber cette idée.

Question numéro 3:

Jai un champ TEMPSAPPEL dans la table TYPETEMPSAPPEL, ce champ est vide, puisque la table est vide. Je souhaite la remplir avec les résultats d'une requete.

En effet, j'ai une requete sur la table SESSION qui retire tous les NSESSION lorsque la description contient la chaine de charactère "temps d'appel : *s". L'étoile est l'info qui m'interrese, il s'agit du temps effectif en sec. Donc je souhaiterais récupere uniquement les valeurs de cette étoile ?
Par cette requete, j'obtiens donc une liste des champs NSESSION et DESCRIPTION. Je souhaite récupérer seulement le nombre entier du champs DESCRITPION (correspondant à *) et pas tout le champ pour le réinjecter dans la table vierge TYPETEMPSAPPEL.

Est ce clair ?
Comment faire ?

Merci d'avance encore
----------------------------------------------

J'ai trouvé des infos la dessus :

Le filtre et la fonction Mid, mais je ne sais pas comment utiliser ces trucs là.
Je continue ma recherche...help me please.

Merci
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
8 mars 2007 à 11:56
OK, je laisse tomber cette idée.

Question numéro 3:

Jai un champ TEMPSAPPEL dans la table TYPETEMPSAPPEL, ce champ est vide, puisque la table est vide. Je souhaite la remplir avec les résultats d'une requete.

En effet, j'ai une requete sur la table SESSION qui retire tous les NSESSION lorsque la description contient la chaine de charactère "temps d'appel : *s". L'étoile est l'info qui m'interrese, il s'agit du temps effectif en sec. Donc je souhaiterais récupere uniquement les valeurs de cette étoile ?
Par cette requete, j'obtiens donc une liste des champs NSESSION et DESCRIPTION. Je souhaite récupérer seulement le nombre entier du champs DESCRITPION (correspondant à *) et pas tout le champ pour le réinjecter dans la table vierge TYPETEMPSAPPEL.

Est ce clair ?
Comment faire ?


Merci d'avance encore
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
8 mars 2007 à 16:21
J'ai trouvé des infos la dessus :

Le filtre et la fonction Mid, mais je ne sais pas comment utiliser ces trucs là.
Je continue ma recherche...help me please.

Merci
0
blux Messages postés 26819 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 avril 2025 3 335
8 mars 2007 à 21:43
SELECT val(left(len(champ)-1)) FROM toto;
On récupère la longueur de 'champ', on enlève 1 et on prend les caractères restants à partir de la gauche, en les transformant en numérique puisque 'champ' contient au départ une donnée de type 'chaîne'...
0
merci beaucoup beaucoup pour sql qui rempli le champ directement dans la table moi aussi j'étais sur mes nerfs!!! merci infiniment pour vos aides!!!!
0