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

WinDev Discussion :

Question de SQL


Sujet :

WinDev

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut Question de SQL
    Bonjour,

    C'est plus une question sur le SQL que sur Windev, mais comme je développe en Windev...

    Voilà, j'ai une table qui regroupe les familles d'articles (ouais, c'est pas original)
    J'ai une table qui regroupe les caractéristiques spécifiques des articles. Ces caractéristiques sont liées aux familles d'articles.

    J'ai donc une table qui répertorie les caractéristiques articles pour une famille.

    Je voudrais faire une requête qui liste les caractéristiques articles qui ne sont pas référencées pour une famille donnée. Et, là, je coince.
    Autant, je sais faire la liste des caractéristiques d'une famille, mais les caractéristiques qui ne sont pas dans une famille, là, je sèche

    Merci d'avance
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  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,
    Une requête rapide, à adapter à ton besoin:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select t1.*
    from Table1 t1
    left outer table2 t2 on t1.x = t2.x
    where t2.y is null
    t2.y devant être une colonne "non nullable" dans la table t2.
    Tu peux aussi passer par un NOT IN, un NOT EXIST... les performances de chaque version dépendent de la base, du nombre de lignes pour chaque table. Bref à tester.

    Tatayo.

  3. #3
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Merci de ta réponse, mais y a un truc qui me chiffonne.

    Je vais essayer d'être le plus clair possible. voici les descriptions des tables

    Table des Caractéristiques articles : T_CaracArt_CAA (caa_id - id automatique; caa_nom (varchar); caa_domaine (varchar); ...)
    Table des Familles d'articles : T_FamArt_FAR( far_id - id automatique; far_nom (varchar))

    Table de lien entre les caractéristiques et les Familles : TJ_FamartCar_LFC ( lfc_id - id automatique; far_id (lien avec T_FamArt_FAR); caa_id (Lien avec T_CaracArt_CAA))

    Il va y avoir plusieurs familles, bien évidemment. Et chaque famille peut avoir plusieurs Caractéristiques. Et des familles vont partager des caractéristiques.

    Donc, dans la requête exemple que tu m'as donné, comment je spécifie quelle famille j'étudie ?
    Le but est d'obtenir la liste des caractéristiques non utilisées par une famille précise.

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Tu as une table qui donne la liste des caractéristiques à renseigner pour tous les produits d'une famille.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     select far_id f, caa_id from  TJ_FamartCar_LFC  where far_id = {param1}

    Tu as certainement une table qui donne la liste des articles appartenant à chaque famille :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select art_id, far_id from articles  where far_id = {param1}

    Tu peux donc recenser le contenu 'théorique' de ta table Article-Caracteristique :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select a.art_id,   b.caa_id 
    from articles a , TJ_FamartCar_LFC b
      where a.far_id = {param1}
      and b.far_id = a.far_id

    Par ailleurs, tu as le contenu réel de ta table Article-Caractéristique :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select c.art_id, c.caa_id, c.caa_value 
    from caract_articles c, articles a 
     where a.art_id = c.art_id and c.far_id = {param1}

    Tu peux donc faire la différence entre ce contenu théorique, et le contenu réel :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select a.art_id,   b.caa_id 
    from articles a , TJ_FamartCar_LFC b
      where a.far_id = {param1}
      and b.far_id = a.far_id  
    minus
    select c.art_id, c.caa_id 
    from caract_articles c, articles a 
     where a.art_id = c.art_id and a.far_id = {param1}
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 180
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message

    Table des Caractéristiques articles : T_CaracArt_CAA (caa_id - id automatique; caa_nom (varchar); caa_domaine (varchar); ...)
    Table des Familles d'articles : T_FamArt_FAR( far_id - id automatique; far_nom (varchar))

    Table de lien entre les caractéristiques et les Familles : TJ_FamartCar_LFC ( lfc_id - id automatique; far_id (lien avec T_FamArt_FAR); caa_id (Lien avec T_CaracArt_CAA))

    Le but est d'obtenir la liste des caractéristiques non utilisées par une famille précise.

    JS
    bonjour,

    en utilisant le code de @tatayo tu pourrais faire (non testé donc à vérifier) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select
    C.*
    from
    T_CaracArt_CAA C left join TJ_FamartCar_LFC FL on C.caa_id  = FL.caa_id
    where
    FL.caa_id is null
    and FL.far_id = <la valeur de la famille recherché>

    ou

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select
    C.*
    from
    T_CaracArt_CAA C left join TJ_FamartCar_LFC FL on C.caa_id  = FL.caa_id and FL.far_id = <la valeur de la famille recherché>
    where
    FL.caa_id is null
    Cordialement JeAn-PhI

Discussions similaires

  1. question su sql server 2005 express edition
    Par nass06 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/04/2006, 20h15
  2. [MySQL] Questions include + sql
    Par Kerweb dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/02/2006, 10h01
  3. Question sur sql et ASP
    Par claralavraie dans le forum ASP
    Réponses: 5
    Dernier message: 23/12/2005, 11h41
  4. Quelques questions sur SQL Server 2000
    Par yinyang dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 19h39
  5. BTS Info de Gestion passé aujourd'hui question pour SQL
    Par red210 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 29/05/2005, 14h48

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