Vous n'êtes pas identifié(e).
Pages : 1
Bonjour guk92,
La solution que tu m'as proposé me convient parfaitement.
Merci pour ton aide.
Bonjour guk92,
Merci d'avoir pris le temps de me lire et me répondre.
Je travail pour une société qui intègre des solutions logiciels pour des clients. Je ne décide pas de la façon dont est conçu le logiciel ni la BDD et j'utilise rarement la BDD comme j'essaye de le faire. Parfois, mon client émet des demandes qui nécessitent de creuser un peu plus loin. Mais pourquoi ne pas demander au fournisseur ? Ou faire évoluer tout ça ? Faute de budget ! Comme bien souvent... Du coup j'essaye de me "dépatouiller".
Techniquement : a la base il existait 1 table par année. Les données enregistrées étaient très volumineuse. Le logiciel propose à l'utilisateur de consulter les "logs d'activités" qui sont contenus dans ces tables via une interface. A l'époque, lorsqu'il n'y avait qu'une table, cela fonctionnait mal. Le fournisseur a décidé de créer 1 table par semaine et c'est mieux.
Je ne connais pas le "partitionnement" n'hésitez pas à m'orienter vers cette information si besoin.
De même, je ne sais répondre à votre question :
"Pourquoi utiliser un nom de colonne plutôt qu'un type ?"
La colonne "primary_device" contient en réalité des ID (des nombres entiers). Le nom de la colonne me semble être "primary_device", ce n'est donc pas un type.
Vous proposez de faire plusieurs requêtes et d'utiliser UNION. Je suis allé voir ce que cela veut dire et je pense que c'est la solution à mon problème.
Je crains une lourdeur dans l’exécution de cette requête, mais c'est une autre histoire.
Je vous tiens informer,
Merci pour votre aide.
Bonjour,
Je me permet de vous adresse ma question bien que je re-découvre SQL (souvenir d'IUT). J'espère que vous pourrez accéder à ma demande ou me rediriger.
J'utilise une base Postgres. Je possède plusieurs tables qui enregistrent les activités utilisateurs d'un système. Pour chaque semaine, j'ai 1 table. Je souhaite rechercher des actions précises sur 1 mois. Donc je dois faire une recherche sur 4 tables. j'essaye d'obtenir le résultat en 1 seule fois.
Les tables sont :
trans_log_y2015_w29
trans_log_y2015_w30
trans_log_y2015_w31
trans_log_y2015_w32
Le nom des colonnes qui m'intéressent dans ces tables sont :
"timestamp"
client_ip
user_name
action_code
primary_device
secondary_device
Je souhaite filtrer sur la colonne action_code avec comme résultat la valeur 1007.
Pour 1 table, ma requête se présente ainsi :
SELECT
"timestamp", client_ip, user_name,
action_code, primary_device, secondary_device
FROM
trans_log_y2015_w32
WHERE
action_code = '1007';
;
*ça m'a pris 1 heure*
Dans un second temps, sans faire de filtre et sur 2 tables, j'ai réalisé cette requête :
SELECT
S1."timestamp", S1.client_ip, S1.user_name,
S1.action_code, S1.primary_device, S1.secondary_device,
S2."timestamp", S2.client_ip, S2.user_name,
S2.action_code, S2.primary_device, S2.secondary_device
FROM
trans_log_y2015_w32 AS S1,
trans_log_y2015_w33 AS S2
;
Je me suis rendu compte que les colonnes étaient mis "bout à bout". En cherchant tout l'après midi, j'ai trouvé le site : http://sql.sh/cours/ et j'ai compris qu'un NATURAL JOIN pouvait répondre à mon problème :
SELECT
S1."timestamp", S1.client_ip, S1.user_name,
S1.action_code, S1.primary_device, S1.secondary_device,
S2."timestamp", S2.client_ip, S2.user_name,
S2.action_code, S2.primary_device, S2.secondary_device
FROM
trans_log_y2015_w32 AS S1 NATURAL JOIN
trans_log_y2015_w33 AS S2
;
Mais le résultat de mes colonnes est vide et j'ai toujours une représentation "bout à bout".
Qu'en pensez vous ?
Merci,
Jérôme
PS : je peux ajouter des screen shot ?
Pages : 1