IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Comment gérer des mots clés ?


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut Comment gérer des mots clés ?
    Bonjour.

    Je souhaite créer un petit programme pour taguer mes photos en utilisant python (tkinter) et sqlite.
    Les tags seront de différents types, dont un type "Personne".
    Je compte créer une table avec le nom des photos, une table avec le nom des personnes et enfin un troisième table pour associer les deux . Une photo pourra donc apparaître plusieurs fois dans cette table suivant le nombre de personnes présentent sur la photo.

    Je me demande comment faire pour sélectionner les photos sur lesquelles apparaissent persone1 et personne 2 par exemple. J'ai pensé faire deux requêtes successives : une première pour les photos où apparaissent personne1 puis une requête sur les résultats de cette requête pour obtenir les photos où apparaissent aussi personne2.
    Est-ce la bonne méthode ? Cela me semble long si je dois itérer le processus pour plusieurs personnes.

    Évidemment, je débute.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu peux faire plus simple, avec une seule requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select photo.id,count(*)
    from photo
    inner join photo_personne on photo_personne.photo_id = photo.id
    inner join personne on personne.id = photo_personne.id
    where personne.nom in (...)
    group by photo.id
    having count(*) = yyy

    Il suffit d'ajouter la liste des nom, et de spécifier à la fin de la requête le nombre de nom qui doivent correspondre.

    Tu peux aussi aller plus loin, en remplaçant l'égalité par >= dans la clause HAVING. Ainsi il devient possible de chercher, par exemple, les photos qui ont au moins 3 noms dans une liste de 5.

    Tatayo.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup, je vais essayer.

Discussions similaires

  1. Comment classer les mots clés des différents langages existants ?
    Par rambc dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 01/02/2010, 18h45
  2. Réponses: 2
    Dernier message: 10/10/2006, 12h38
  3. Comment stocker des mots clés dans une bas Mysql
    Par renofx1 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 05/01/2006, 00h57
  4. Réponses: 13
    Dernier message: 16/11/2005, 13h15
  5. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo