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 :

Probleme SQL Query


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut Probleme SQL Query
    Salut

    J ai un table de ce type:

    Id ParentID etc...
    -- ---------
    1
    2 1
    3 1
    4 1

    Je fais une requete avec differentes conditions : j aimerais qu lorsque l un des record ressort je recupere egalement les autres qui lui sont rattache ;

    Par exemple; je recupere Id-> 1 ; je recupere 2 ;3 et 4 ou alors si je recupere 3 je recupere egalement 1, 2, 3, et 4

    Merci d avance

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 144
    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 144
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Auto-jointure.

    Ouverte au cas où on retourne des lignes sans filles.

    Et si c'est récursif (on veut les fils et les petit-fils et ainsi de suite) alors il faut passer par une CTE.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Merci

    Mais fonctionne pas...

    Si j ai , par exemple, une table comme cela:

    Id ParentID flag
    -- -------------
    1 4
    2 1 2
    3 1 3
    4 1 5

    Et qu ma recherche est "Where flag = 2 or flag 3" je recois record 2 et 3 mais j aimerais egalement avec 1 et 4

    Et si je recherche Flag = 4 j aimerais aussi recupere 2, 3 et 4

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 144
    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 144
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Tu peux poster ta requête ?

    Car je persiste et signe : auto-jointure et ça marchera forcément.
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 t1 inner join table1 t2 on t1.id=t2.parentid where ...
    Du coup il me retourne que les records ou id = parentid

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 144
    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 144
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Et ton filtre du flag, il porte sur t1 ou t2 ?

    Et accessoirement, moi j'aurais filtré sur t1.parentid = t2.parentid or t1.id = t2.parentid puisque tu veux l'élément racine et ses enfants.

    Si tu changes, normalement ça doit marcher.
    On ne jouit bien que de ce qu’on partage.

  7. #7
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Je fais le where sur t1 ; mais cela ne marche pas.

    Je recois 3 records ; les 3 records ont certains champs qui sont different mais les 3 id sont les memes (manque le "pere")

  8. #8
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 144
    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 144
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select distinct t2.*
    from table t1
    inner join table t2 on t2.parentid = t1.parentid or t2.id = t1.parentid
    where t1.flag in (2, 3)

    Z'êtes sûr que ça marche pas ça ?
    On ne jouit bien que de ce qu’on partage.

  9. #9
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Ah ... j avais fais le select sur t1 ; cela a l air de mieux marché sur t2

    Mais il me manque encore 1 record il n y en a que 3

  10. #10
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 144
    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 144
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Pourtant, avec vos données, j'ai le bon résultat :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    with tbl (Id, ParentID, flag)
    as
    (
    	select 1, 4, null
    	union all
    	select 2, 1, 2
    	union all
    	select 3, 1, 3
    	union all
    	select 4, 1, 5
    )
    select distinct t2.*
    from tbl t1
    inner join tbl t2 on t2.parentid = t1.parentid or t2.id = t1.parentid
    where t1.flag in (2, 3);
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Probleme de query SQL et XML
    Par byrong dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/10/2013, 18h48
  2. Probleme sql query
    Par AurelienNF dans le forum Langage
    Réponses: 5
    Dernier message: 14/09/2010, 20h48
  3. as400 sql/QUERY probleme de dates
    Par philswiss dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/07/2007, 07h16
  4. Recherche Data pour m'exercer en SQL-Query
    Par Oneill dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 13/10/2004, 12h43
  5. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 05h32

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