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 :

Jointure 1 ligne à plusieurs


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de linke
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 119
    Points : 139
    Points
    139
    Par défaut Jointure 1 ligne à plusieurs
    bonjour

    je galère sur une roquette; je cherche a faire une jointure entre deux table ( par exemple a et b ) .
    pour chaque ligne de a je veux afficher tous les lignes de b ( avec une petit condition dans le Select pour vérifier la valeur; mettre a true ou false ... etc )

    j'ai essaye plein de combinaison sans résultat , a savoir j’utilise une bdd sql server compact 3.5

    aussi une chose et bizarre , la bdd n'accepte pas un Select (dans un autre Select ) comme champ fictif ????!!

    merci pour toute aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Difficile de dire ce qui ne va pas dans une requête, sans avoir la requête ni la description des tables ni un jeu d'essai ni le résultat attendu...

    Tatayo.

  3. #3
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Utilise CROSS JOIN pour faire un produit cartésien
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 152
    Points : 7 402
    Points
    7 402
    Billets dans le blog
    1
    Par défaut
    SQL CE dispose d'un moteur SQL très limité, et toute la norme SQL n'est pas prise en charge.

    Donc autant un SELECT FROM SELECT est, de mémoire, possible, autant un SELECT de SELECT ne l'est pas (ceci dit, c'est une syntaxe fortement déconseillée, car très peu claire et source de bugs).

    Pour faire un produit cartésien, il faut en effet utiliser CROSS JOIN, qui ne prends pas de paramètre ON.

    Ensuite, pour ton histoire de TRUE et FALSE, je suis pas trop sûr de comprendre.

    1/ Pour chaque ligne de A, tu veux toutes les lignes de B avec un flag TRUE/FALSE si la ligne de B est liée à A ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select a.id, a.nom, b.id, b.nom, case when a.id = b.a_id then true else false end flag
    from a
    cross join b
    En espérant que CASE soit supporté par SQL CE, sinon il faudra trouver autrechose (iif() ?)

    2/ Pour chaque ligne de A, tu veux un flag qui indique si une ligne de B existe ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select distinct a.id, a.nom, case b.id when null then false else true end flag
    from a
    left outer join b on b.a_id = a.id
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Rappel:
    pour avoir un produit cartésien on peut faire comme suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select a.*,b.*
    from a,b
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  6. #6
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Citation Envoyé par islamov2000 Voir le message
    Rappel:
    pour avoir un produit cartésien on peut faire comme suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select a.*,b.*
    from a,b

    Effectivement, Cette notation est possible mais obsolète depuis la Norme SQL 2 (1992 !!!!)

    Depuis SQL propose les jointures avec les mot clés :
    - INNER JOIN
    - LEFT OUTER JOIN
    - RIGTH OUTER JOIN
    - CROSS JOIN
    -...


    Cette "nouvelle" notation est plus lisible que l'ancienne notation et est donc a préférer ...
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/10/2008, 13h29
  2. Jointure conditionnele sur plusieurs tables
    Par Clorish dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 20/12/2007, 14h20
  3. Requete permettant de renvoyer sur une ligne plusieur valeurs
    Par shaun_the_sheep dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/02/2007, 15h09
  4. SQL : Jointure droite sur plusieurs champs
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/12/2006, 13h55
  5. jointures externes entre plusieurs tables
    Par hacksi dans le forum Access
    Réponses: 22
    Dernier message: 15/05/2006, 16h26

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