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 :

[SQLServer] requete sql


Sujet :

Langage SQL

  1. #1
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut [SQLServer] requete sql
    Bonjour,
    Je n'arrive pas a faire une requete.
    J'ai une table avec deux clees primaires
    Constraint(QueryId, ConstraintName)

    Une procedure stockee me recupere ces tuples qui correspondent a certains criteres.

    Ensuite je voudrais faire un simple select sur la table Constraint ou les tuples (QueryId, ConstraintName) ne sont PAS dans le resultat de ma procedure stockee. J'ai une fonction qui retourne les resultat de ma procedure stockee, donc avec seulement QueryId ca donnerait:

    Select * from Constraint where QueryId not in (select QueryId from myfunction) et ca, ca marche.

    Par contre comment le faire avec QueryId ET ConstraintName ?

    Merci

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Tu as une table avec une clé primaire constituées de deux colonnes.

    Tu ne cites pas ton moteur, donc je te réponds avec l'utilisation des ROW VALUE CONSTRUCTORS implémentés dans ORACLE par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from Constraint where (QueryId, ConstaintName) not in (select QueryId, ConstaintName from myfunction)
    Sinon il te reste des bidouilles...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Non j'ai deux cles primaires, QueryId et ConstraintName.
    Il faut donc que ce soit l'association de ces deux cles qui ne soit pas dans le resultat de ma fonction.

    ex:

    dans Constraint:

    query1 - constraint1
    query2 - constraint1
    query3 - constraint2

    dans le resultat de ma fonction:

    query2 - constraint1

    mon select doit retourner :

    query1 - constraint1
    query3 - constraint2

    Ton exemple marcherait-il pour ca ?

    Merci

  4. #4
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Ca ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE PROCEDURE pr_Admin_GetConstraintMessages
    AS
    SELECT CM.QueryId, Message, Type, Q.QueryName, Q.RootTable, ConstraintName
    FROM ConstraintMessages CM JOIN Queries Q ON CM.QueryId = Q.QueryId
    WHERE (CM.QueryId, ConstraintName) 
    NOT IN (SELECT QueryId, ConstraintName from fn_Admin_GetOrphanedMessages)
    GO
    message d'erreur : Incorrect syntax near ',' (il s'agit de (CM.QueryId, ConstraintName) apres le Where.

    ps: je suis sous SQL Server 2000

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Normal, SQLServer ne supporte pas les RVC, si tu l'avais annoncé dans ton premier post, comme c'est la règle dans ce forum, nous aurions gagné du temps

    J'insiste : une table ne peut avoir qu'une seule clé primaire, tous les livres de modélisation te le confirmerons. La clé primaire est composée de deux colonnes, c'est tout.

    Sans RVC il te reste la bidouille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE CM.QueryId + '$$$' + ConstraintName
    NOT IN (SELECT QueryId + '$$$' + ConstraintName from fn_Admin_GetOrphanedMessages)
    Comme QueryId n'est sans doute pas un varchar, il faut sans doute ajouter un CAST. (le + c'est bien l'opérateur de concaténation sous SQL Server ?)
    Autre problème : cette requête n'utiliseras pas les index.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  6. #6
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    Pour de la bidouille, c'est de la bidouille !
    Bon si y a pas d'autre solution, je vais m'en tenir a cela. J'essayerais et je te tiendrais au courant.

    Normal, SQLServer ne supporte pas les RVC, si tu l'avais annoncé dans ton premier post, comme c'est la règle dans ce forum, nous aurions gagné du temps
    desole, pas trop habitue a ce forum... je saurais la prochaine fois.

    J'insiste : une table ne peut avoir qu'une seule clé primaire, tous les livres de modélisation te le confirmerons. La clé primaire est composée de deux colonnes, c'est tout.
    bon certes. c'est ce que je voulais dire

    le + c'est bien l'opérateur de concaténation sous SQL Server ?)
    il me semble oui, mais je dois verifier

    Merci[/quote]

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 084
    Points : 30 834
    Points
    30 834
    Par défaut
    Tu peux essayer aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select * 
    from Constraint as c
    where not exists 
    (select QueryId, ConstraintName 
     from myfunction as f
     where f.QueryId=c.QueryId
     and f.ConstraintName=c.ConstraintName
    )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    J'ai pas encore eu le temps d'essayer ni l'une ni l'autre de ces methodes, mais la deuxieme m'a l'air de loin beaucoup mieux (si elle marche )

    merci

  9. #9
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    al1_24
    ca marche impec'

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

Discussions similaires

  1. requetes sql sqlserver
    Par mohamed_75 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/02/2007, 13h24
  2. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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