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 :

[Conception] Inclusion d'ensemble [FAQ]


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut [Conception] Inclusion d'ensemble
    Bonjour,

    la problèmatique :
    J'ai une base de téléphone, chaque téléphone accepts divers codecs (mpg4, mp3, 3gp, wmv & co)
    J'ai une base de fichier, chaque fichier est encodé dans un ou plusieurs codecs (exemple a.avi encodé en mpg4 et mp3)

    Je dois être capable de sortir pour un téléphone donné tous les fichiers entièrement compatible.
    Un fichier est concidéré comme compatible a un téléphone si l'ensemble des codecs du fichier est ENTIEREMENT inclus dans l'ensemble des codec qu'accepte le téléphone.

    Donc j'ai pensé faire les tables (trés simplifié hein)
    telephones (id, nom)
    fichier(id, nom)
    codec(id, nom)

    telephone_accept(phone_id, codec_id)
    fichier_accept(fichier_id, codec_id)


    Le problème c'est l'écriture de la requete
    qui pourrait être en language "sqlhumain" pour le telephone 1

    SELECT a.* FROM fichier AS a
    WHERE
    (SELECT b.codec_id FROM fichier_accept AS b WHERE b.fichier_id = a.id)
    ISINCLUDE IN
    (SELECT c.codec_id FROM telephone_accept AS c WHERE c.phone_id = 1)


    Je n'ai pas trouvé de documentation sur les opérations ensembliste du genre test d'inclusion, d'égalité ...

    La je bloque, je trouve pas de schema pour ma BD permettant de trouver la réponse

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Requête pas évidente qu'il faut tourner autrement pour qu'elle soit plus facilement compréhensible et exprimable en SQL. Je te la donne en francais :

    Quels sont les couples téléphones/fichiers pour lesquels il n'existe pas de codecs nécessaires au fichier qui ne soit pas dans les codecs pris en charge par le téléphone.
    On peut l'écrire avec un double not exists, ce que je vais tenter de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t.id, t.nom, f.id, f.nom
    FROM telephones t, fichier f 
    WHERE not exists (	SELECT * 
    			FROM fichier_accept fc
    			WHERE fc.fichier_id = f.id 
    			AND not exists (	SELECT * 
    						FROM telephone_accept tc 
    						WHERE tc.phone_id = t.id 
    						AND tc.codec_id = fc.codec_id
    					)
    		)
    J'ai aliasé tes deux tables d'association en tc (pour tel codec) et fc (fichier codec)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut
    Effectivement si l'on retourne la requete ca simplifie un peu beaucoup.
    Merci

    Tu pense qu'il existe une meilleure methode pour stocker ce genre d'informations ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    C'est vrai que je n'ai pas répondu à ta question qui demandait si ton modèle était mauvais. Je n'y ai pas répondu car ton modèle est le bon.

    D'ailleurs je suppose que quand la requête te posait problème, tu as remis en cause ton modèle mais n'y as rien trouvé d'anormal : normal !

    N'oublie pas le tag résolu (il y a un bouton fait pour) quand on a répondu à ton problème sur un topic.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête inclusion d'ensembles
    Par groquooic dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/02/2013, 11h06
  2. Réponses: 3
    Dernier message: 21/05/2007, 11h00
  3. Réponses: 3
    Dernier message: 18/09/2006, 18h30
  4. Réponses: 2
    Dernier message: 25/04/2006, 17h08
  5. [LG]declaration ensemble et test d'inclusion
    Par regar dans le forum Langage
    Réponses: 7
    Dernier message: 10/12/2003, 16h57

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