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

Développement SQL Server Discussion :

SQL INNER JOIN et SELECT


Sujet :

Développement SQL Server

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut SQL INNER JOIN et SELECT
    Bonjour a vous tous,

    Je souhaiterais savoir s'il est possible d'effectuer un select dans une jointure ?

    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TATA
    INNER JOIN TOTO ON (SELECT ID,LIBELLE,MONTANT FROM TOTO WHERE TOTO.ID=TATA.ID GROUP BY TOTO.ID)
    WHERE TATA.YEAR = 2014
    Merci pour votre aide
    onha

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 907
    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 907
    Points : 51 656
    Points
    51 656
    Billets dans le blog
    6
    Par défaut
    Oui, à condition de nommer la table dérivée par un alias... Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TATA
    INNER JOIN TOTO ON (SELECT ID,LIBELLE,MONTANT FROM TOTO WHERE TOTO.ID=TATA.ID GROUP BY TOTO.ID) AS T
    WHERE TATA.YEAR = 2014
    A +

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Points : 586
    Points
    586
    Par défaut
    C'est super bizarre comme syntaxe, et chez moi "compile" pas

    C'est sensé donné quoi comme résultat?

    Et quel est la différence par rapport à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T.ID,T.LIBELLE,T.MONTANT
    FROM TATA
    INNER JOIN TOTO AS T ON TOTO.ID=TATA.ID
    WHERE TATA.YEAR = 2014

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 907
    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 907
    Points : 51 656
    Points
    51 656
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TATA
    INNER JOIN TOTO ON (SELECT ID,LIBELLE,MONTANT FROM TOTO ) AS TATA
    WHERE TOTO.ID=TATA.ID  AND TATA.YEAR = 2014
    A +

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Points : 586
    Points
    586
    Par défaut
    ça marche pas mieux, chez moi il veux une expression après le ON

    à la limite ça je comprends (même si c'est un peu bête de le faire comme ça)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM TATA
    INNER JOIN (SELECT ID,LIBELLE,MONTANT FROM TOTO ) AS TOTO ON TOTO.ID=TATA.ID
    WHERE  TATA.YEAR = 2014

    Mais j'ai jamais vu la syntaxe bizarre avec une jointure et un ON sans expression

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Non, en effet, je pense que SQLPro a répondu trop vite.

    on peut en effet effectuer une jointure sur une table dérivée (sous requête) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT ...
    FROM UnTable
    INNER JOIN (
        SELECT ...
        FROM ...
    ) AS UnAlias
        ON ...
    ...
    Mais la syntaxe postée par onha94 est fausse.

    On peut en revanche faire des sous requêtes dans la clause ON de la jointure, mais... ça doit rester une condition.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT ...
    FROM UneTable
    INNER JOIN UneTable
        ON EXISTS(
            SELECT ...
            FROM ...
            ...
        )
    Mais là, comme ça, je ne vois pas de cas concret d'utilisation de ce genre de syntaxe.

    Peut-être qu'onha94 pourra nous dire plus concrètement ce qu'il cherche à faire...

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Bonjour a vous tous et merci pour vos retour rapide.


    Je cherche a compiler les enregistrements de la table TOTO pour faire une jointure.

    Je vais donc essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN (Select DL.idPie,sum(DL.PV) AS PV from wtdocl DL WITH (NOLOCK) group by DL.idPie) DL ON (DL.idpie=DAM.idpie)
    ONHA

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Points : 586
    Points
    586
    Par défaut
    C'est peut être ça que vous essayé de faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WITH DL AS (Select DL.idPie,sum(DL.PV) AS PV from wtdocl DL WITH (NOLOCK) group by DL.idPie)
    SELECT *
    FROM TATA DAM
    INNER JOIN DL ON DL.idpie=DAM.idpie

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Donpi Voir le message
    C'est peut être ça que vous essayé de faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WITH DL AS (Select DL.idPie,sum(DL.PV) AS PV from wtdocl DL WITH (NOLOCK) group by DL.idPie)
    SELECT *
    FROM TATA DAM
    INNER JOIN DL ON DL.idpie=DAM.idpie

    Nickel je vais en apprendre tous les jours.

    merci à tous

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

Discussions similaires

  1. Question SQL INNER JOIN (SQLCE)
    Par webgig2002 dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/06/2008, 02h52
  2. Problème SQL INNER JOIN
    Par Khleo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/03/2008, 00h22
  3. SQL inner join select temps d'éxécution
    Par binouzzz19 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/10/2007, 14h50
  4. Probleme de SQL INNER JOIN WHERE
    Par korben06 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/06/2007, 18h18
  5. [ requeste sql ]INNER JOIN / OUTER JOIN
    Par hocinema dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/04/2004, 21h28

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