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 :

Raffinement dans un select


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Par défaut Raffinement dans un select
    Bonjour,

    je voudrais savoir si il est possible de faire un raffinement dans un select.

    Je voudrais en effet appliquer un critère quelconque dans mon select en faisant appel à une table d'un select supérieur. Désolé si c'est pas clair, mais c'est pas facile à expliquer. Peut etre qu'un peu de code aidera.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT (SELECT dmdVal.* FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (3,4,5))
    FROM
    (
      SELECT sc.ID_SUIVI_CANDIDAT
      FROM SUIVI_CANDIDAT sc
      INNER JOIN UTILISATEUR u ON sc.ID_UTILISATEUR = u.ID_UTILISATEUR
      INNER JOIN PERSONNE p ON u.ID_PERSONNE = p.ID_PERSONNE
      WHERE sc.DATE_SUIVI_CANDIDAT <= DateFin
      AND sc.DATE_SUIVI_CANDIDAT >= DateDebut
      AND sc.ID_TYPE_PRISE_CONTACT = id_demande_val
    ) AS dmdVal;
    Le problème de cette requete est que dans le 2eme select, dmdVal n'extiste pas...

    plz, help!!


    Merci

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    je voudrais savoir si il est possible de faire un raffinement dans un select.
    Je voudrais en effet appliquer un critère quelconque dans mon select en faisant appel à une table d'un select supérieur

    La drogue c'est mal.
    (variante : c'est toi le raffinement)

    Sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT dmdVal.*
    FROM
    (
      SELECT sc.ID_SUIVI_CANDIDAT
      FROM SUIVI_CANDIDAT sc
      INNER JOIN UTILISATEUR u ON sc.ID_UTILISATEUR = u.ID_UTILISATEUR
      INNER JOIN PERSONNE p ON u.ID_PERSONNE = p.ID_PERSONNE
      WHERE sc.DATE_SUIVI_CANDIDAT <= DateFin
      AND sc.DATE_SUIVI_CANDIDAT >= DateDebut
      AND sc.ID_TYPE_PRISE_CONTACT = id_demande_val
    ) AS dmdVal
    where dmdVal.ID_SUIVI_CANDIDAT IN (3,4,5)
    devrait largement suffire.
    Dernière modification par Scorpi0 ; 25/08/2008 à 17h16.

  3. #3
    Membre confirmé Avatar de misterdi
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Tu peux encore remonter la condition du WHERE global d'un cran il me semble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT dmdVal.ID_SUIVI_CANDIDAT
      FROM SUIVI_CANDIDAT dmdVal
      INNER JOIN UTILISATEUR u ON dmdVal.ID_UTILISATEUR = u.ID_UTILISATEUR
      INNER JOIN PERSONNE p ON u.ID_PERSONNE = p.ID_PERSONNE
      WHERE dmdVal.DATE_SUIVI_CANDIDAT <= DateFin
      AND dmdVal.DATE_SUIVI_CANDIDAT >= DateDebut
      AND dmdVal.ID_TYPE_PRISE_CONTACT = id_demande_val
      AND dmdVal.ID_SUIVI_CANDIDAT IN (3,4,5)
    Et on renomme la table en dmdVal pour que cela reste compatible au niveau des noms.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Par défaut
    Hm, merci pour vos réponses, mais ce n'est pas exactement ce que j'attendais.

    J'ai peut etre été un peu léger:

    Au final, il faudrait que ma requete puisse sélectionner des ID_SUIVI_CANDIDAT différents. Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT (SELECT dmdVal.* FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (3,4,5)), (SELECT dmdVal.* FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (6,7,8))
    FROM
    (
      SELECT sc.ID_SUIVI_CANDIDAT
      FROM SUIVI_CANDIDAT sc
      INNER JOIN UTILISATEUR u ON sc.ID_UTILISATEUR = u.ID_UTILISATEUR
      INNER JOIN PERSONNE p ON u.ID_PERSONNE = p.ID_PERSONNE
      WHERE sc.DATE_SUIVI_CANDIDAT <= DateFin
      AND sc.DATE_SUIVI_CANDIDAT >= DateDebut
      AND sc.ID_TYPE_PRISE_CONTACT = id_demande_val
    ) AS dmdVal;

  5. #5
    Scorpi0
    Invité(e)
    Par défaut
    Oui mais alors là je pense que c'est toi qui a les idées pas clairs ^^

    Ce que tu demande en environ impossible, rien ne t'assure par exemple que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT dmdVal.* FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (3,4,5))
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT dmdVal.* FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (6,7,8))
    te retournes le même nombre de ligne pour que tu puisse les 'concaténer' dans des colonnes différentes.
    Je pense que tu as besoin de te faire un exemple précis, parce que là ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Par défaut
    oui, exact, je me suis encore une fois mal exprimé, c'est un count que je veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT count(dmdVal.*) FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (3,4,5))
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT count(dmdVal.*) FROM dmdVal WHERE dmdVal.ID_SUIVI_CANDIDAT IN (6,7,8))

Discussions similaires

  1. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44
  2. [interbase][SQL] concatener 2 champs dans le select
    Par Harry dans le forum Bases de données
    Réponses: 10
    Dernier message: 09/03/2006, 06h45
  3. Joindre une valeur arbitraire dans un SELECT
    Par Tuxxy dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/01/2004, 17h04
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

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