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 :

pb requete


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut [RESOLU] pb requete
    Bonjour,
    J'ai une requête qui me renvoie une liste différente de ce que je souhaite.

    Pour celà j'ai une liste de méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Lib_methodes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[Lib_methodes]
    GO
     
    CREATE TABLE [dbo].[Lib_methodes] (
    	[Id_methode] [int] NOT NULL ,
    	[Lib_methode] [nvarchar] (50) COLLATE French_CI_AI NULL ,
    	[Id_rub] [nvarchar] (5) COLLATE French_CI_AI NULL 
    ) ON [PRIMARY]
    GO
     
    "1                   ",1
    "1                   ",3
    "1                   ",14
    "2                   ",3
    "2                   ",14
    "3                   ",1
    et une table comportant les méthodes sélectionnées par le contact:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Cont_methodes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[Cont_methodes]
    GO
     
    CREATE TABLE [dbo].[Cont_methodes] (
    	[Id_cont] [nchar] (20) COLLATE French_CI_AI NOT NULL ,
    	[Id_methode] [int] NOT NULL 
    ) ON [PRIMARY]
    GO
     
    1,"Acupuncture","a"
    3,"Eutonie",""
    4,"Homeopathie",""
    5,"Training Autogene de Schultz",""
    6,"Phytotherapie",""
    7,"Naturopathie",""
    8,"Art Therapie",""
    9,"Qi Gong",""
    10,"Rebirth",""
    11,"Reflexologie",""
    12,"Sophrologie",""
    13,"Yoga",""
    14,"Aromathérapie",""
    Je voudrai avoir une liste de toutes les méthodes non déjà sélectionnée par un contact
    Hors j'ai essayé différentes requêtes dans la PS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE PROCEDURE MethodesNonSelectCont_Lst
    AS
    SET NOCOUNT ON;
    SELECT     dbo.Lib_methodes.Id_methode, dbo.Lib_methodes.Lib_methode, dbo.Cont_methodes.Id_cont
    FROM         dbo.Cont_methodes RIGHT OUTER JOIN
                          dbo.Lib_methodes ON dbo.Cont_methodes.Id_methode = dbo.Lib_methodes.Id_methode
    WHERE     (NOT EXISTS
                              (SELECT     *
                                FROM          cont_methodes
                                WHERE      dbo.Cont_methodes.Id_cont = N'1')) ;
    GO
    je n'arrive pas à enlever dans le résultat la liste des méthodes sélectionnées par d'autres contacts.
    Y a t-il une requête qui permet d'obtenir le résultat souhaité ?
    Merci d'avance
    a+
    herve
    [EDIT] comme suggéré par Sir Tengu [/EDIT]

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    N'oubliez pas d'éditer votre 1er message et d'ajouter [RESOLU] au titre de votre message une fois que vous avez la réponse !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    bonjour,
    est ce que cela répond à ta question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     dbo.Lib_methodes.Id_methode, dbo.Lib_methodes.Lib_methode, dbo.Cont_methodes.Id_cont 
    FROM                  dbo.Lib_methodes 
    left outer join       dbo.Cont_methodes 
    ON dbo.Cont_methodes.Id_methode = dbo.Lib_methodes.Id_methode 
    WHERE dbo.Cont_methodes.Id_methode is null
    a+
    Soazig

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut complement liste
    Bonjour,
    Non malheureusement.
    Pour essayer de mieux me faire comprendre je vais partir sur la requête suivante qui me liste bien les méthodes enregistrées pour le contact '1':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT     dbo.Cont_methodes.Id_cont, dbo.Lib_methodes.Id_methode, dbo.Lib_methodes.Lib_methode
    FROM         dbo.Lib_methodes INNER JOIN
                          dbo.Cont_methodes ON dbo.Lib_methodes.Id_methode = dbo.Cont_methodes.Id_methode
    WHERE     (dbo.Cont_methodes.Id_cont = N'1')
    Et bien je voudrai obtenir dans la nouvelle requête les méthodes qui n'ont pas déjà été enregistrées pour ce contact '1' (ce qui devrait impliquait des id_methode Null ou enregistrés par le contact '2' par exemple)
    Merci de votre aide
    a+
    herve

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Pour cela il faut utiliser une requête ensembliste de type EXCEPT. A lire :
    http://sqlpro.developpez.com/SQL_AZ_...ENSEMBLEexcept

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut [RESOLU] requete
    Bonjour,
    Malheureusement EXCEPT ne fonctionne pas avec SQL serveur.
    heureusement tu as donné une alternative qui à l'air de bien fonctionner dans mon cas:
    c'est l'exemple 17 de ta page
    SELECT OBJ_NOM
    FROM T_OBJET
    WHERE OBJ_NOM NOT IN (SELECT MAC_NOM
    FROM T_MACHINE)

    Merci donc
    a+
    herve

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

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51
  3. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  4. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43
  5. [Kylix] Requetes Kylix pour postgres
    Par Miltown dans le forum EDI
    Réponses: 1
    Dernier message: 29/05/2002, 20h22

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