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

Requêtes et SQL. Discussion :

Intersection 2 requetes [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut Intersection 2 requetes
    Hello,

    Bon je bloque sur un (autre) probleme.
    Je simplifie le problème :
    J'ai une table tasks
    ID | parentID | tnID | name
    Parent ID me permet de faire un historique des tasks, mais cela importe peu ici

    J'ai une requete taksByTN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MIN(id) AS idn 
    FROM   tasks 
    WHERE  tasks.tnid >= numIssue()
    GROUP  BY parentID
    Avec cette fonction numIssue qui renvoi simplement le tnID que lon souhaite visualise.
    Jusque la pas de probleme

    Le probleme arrive lorsque je souhaite faire un DELTA sur les requetes.
    En gros je souhaite que lorsque je recupere la tnID 3 savoir si la tasks etait dans la 2.
    J'ai tenté quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT tasks.ID, 
    IIf(Exists (SELECT idn FROM taksByTN WHERE tasks.ID = taksByTN.idn),"M","N") AS Mod, *
    FROM tasks
    WHERE [ID] In (SELECT idn FROM taksByTN);
    Mais cela ne fonctionne pas, il me compte tasks.ID comme un parametre et me demander de le rentrer a la main.

    Ici je ne souhaite pas m'occuper de comment on change le numIssue(), c'est le sujet d'un autre topic, et donc le premier renvoi de taksByTN n'est pas le meme que le deuxieme.

    Merci de votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    J'avais pensé a un DLookUp mais je prefere au maximum ne pas m'en servir.

    Donc si vous avez des idees comment faire cette intersection ?!

    Je vous remerci

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    Bon et bien j'ai fini par copier ma requete tasksByTN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'tasksByTN
    SELECT MIN(id) AS idn, parentID
    FROM   tasks 
    WHERE  tasks.tnid >= numIssue()
    GROUP  BY parentID
     
    'tasksByTNPrev
    SELECT MIN(id) AS idn, parentID
    FROM   tasks 
    WHERE  tasks.tnid >= numIssue()-1
    GROUP  BY parentID
    Et j'utilise un DCount ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [tasks.ID] AS ID, IIf(DCount('idn','tasksByTNPrev','parentID=' & [parentID])=0,"N",IIf(DCount('idn','tasksByTNPrev','idn=' & [ID])=0,"M","S")) AS Mod, *
    FROM tasks
    WHERE [ID] In (SELECT idn FROM tasksByTN);
    C'est pas trop optimisé mais ca marche ...

    Merci pour mon aide

  4. #4
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Je suis content de voir que tu as trouvé une solution.

    Je t'aurais volontier aidé, mais je n'ai malheureusement pas la capacité de le faire.

    ps: pourquoi souhaites-tu éviter le DLookup?

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    Hey hey
    Merci de tes encouragements !

    Le DLookup est une fonctione domaine de Access, elle fait donc appel a des caracteristique intraseque de Access. Et j'avais lu qu'au niveau performance il vallait mieux eviter de s'en servir quand cela etait possible.

    Et puis etant donné qu'un jour je souhaite connecter ma base actuel access a une base SQL je ne sais pas trop ce que cela donnera ...

  6. #6
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Décembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    C'est bon à savoir. Car j'utilise cette fonction à pas mal d'endroits pour mon projet. Je vais garder ça à l'esprit.

    Un collègue m'avait proposé une alternative en utilisant des fonctions ADO/DAO mais ça me semblait bien compliqué. C'était finalement peut être mieux. Bref, je vais pas polluer ton sujet

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    Effectivement DAO/ADO sont bien plus performante:

    Voir :
    http://access.developpez.com/faq/?pa...#PerfRstDomain

    Il ne reste plus qu'a voir si la creation de ces propres fonctions de domaine ne serait une bonne idee.
    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function DDLookUp(field as string, table as string, criteria as string) as string
    dim db as DAO.database
    dim rst as DAO.recordset
    dim strRqt as string
     
    strRqt = "SELECT TOP 1 " & field & " FROM " & table & " WHERE " & criteria
    set db = currentDB
    set rst = db.OpenRecordset(strRqt, DbOpenSnapShot)
     
    DDLookUp = rst.fields(field).value
     
    set db = nothing
    set rst = nothing
    End Function

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

Discussions similaires

  1. Requete intersection avec Pg 8.2
    Par Goldorak59 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 28/08/2007, 18h48
  2. SQL : requete intersection
    Par kumo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/06/2007, 12h35
  3. Réponses: 2
    Dernier message: 29/08/2006, 10h40
  4. probleme de requete d'intersection
    Par boudou dans le forum Oracle
    Réponses: 3
    Dernier message: 23/02/2006, 15h26
  5. [Requete] Intersection de requte
    Par KorHeve dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/04/2005, 17h45

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