Bonjour,
je connais bien SLQ dans SQL-Server ou MySQL mais moins dans PostGreSQL.
je dois faire une recherche dans la table access_log d'une base qui enregistre les logs de connexion d'un site et autres actions sur ce site, la table est simple, 8 champs :
- un champ ID Pk au format Bigint
- un champ acces_date au format date
- un champ user_action au format Text
- les champs suivants sont inutiles à mon problème
Pour le contenu du champ user_action, il contient un json différent suivant le type d'action, exemples :
- {"action":"authentification','user":"xxxxxxx","compte":"123456789"}
- {"action":"page","pagenum":"1","compte":"123456789"}
- {"action":"tempspage","pagenum":"1","dtDeb":"2024-07-12 13:13:45.122","dtFin":"2024-07-12 13:13:57.459","compte":"123456789"}
- {"action":"download","Filename":"nomdoc.xxx","size":"256745","compte":"123456789"}
je souhaite récupérer toutes les lignes user_action de download, il me semblait que la requête serait :
SELECT access_date, user_action FROM access_log WHERE user_action->"action"="download" => j'ai une erreur : ERROR: column "action" does not exist
si j'écrit la requête avec de simple guillemet :
SELECT access_date, user_action FROM access_log WHERE user_action->'action'="download" => j'ai une erreur : ERROR: operator does not exist: text -> unknown
si j'écrit la requête sans guillemet :
SELECT access_date, user_action FROM access_log WHERE user_action->action="download" => j'ai une erreur : ERROR: column action does not exist
Donc je suppose que j'écris mal la requête mais je n'arrive pas à trouver la bonne syntaxe, si quelqu'un peut m'aider ...
Pour info je suis sous PgAdmin 4 et je n'ai aucune idée de la version de PostGres
Merci d'avance
Alain
Partager