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 :

Trouver a quel batiment appartient une classe?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Par défaut Trouver a quel batiment appartient une classe?
    bonjour,

    Alors voila, je dispose d'un table SQL de ce type:

    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    +---------------------+----------------------+------+------------+
    | id                   | parent            | type | name       |
    +---------------------+---------------------+------+------------+
    | 6-3348-5072-5 |                       | ci   | Commune    |
    | 4-1611-6110-7 | 6-3348-5072-5 | to   | Ville      |
    | 0-5670-3537-9 | 4-1611-6110-7 | di   | District 1 |
    | 0-5715-6076-8 | 4-1611-6110-7 | di   | District 2 |
    | 3-1716-2428-1 | 1-0325-7401-1 | ro   | Classe 1   |
    | 5-4588-7332-7 | 1-0325-7401-1 | ro   | Classe 2   |
    | 4-5405-2068-7 | 1-0325-7401-1 | ro   | Classe 3   |
    | 7-5381-2167-6 | 1-0325-7401-1 | ro   | Classe 4   |
    | 5-5117-8855-4 | 1-0325-7401-1 | ro   | Classe 5   |
    | 4-4863-5857-0 | 7-2642-8830-7 | ro   | Classe 6   |
    | 5-2480-6342-6 | 7-2642-8830-7 | ro   | Classe 7   |
    | 0-7804-7343-4 | 7-2642-8830-7 | ro   | Classe 8   |
    | 2-4452-3342-9 | 7-2642-8830-7 | ro   | Classe 9   |
    | 4-3618-3304-4 | 7-2642-8830-7 | ro   | Classe 10  |
    | 4-2624-3786-8 | 3-1775-6807-3 | ro   | Classe 1   |
    | 0-3357-3502-9 | 3-1775-6807-3 | ro   | Classe 2   |
    | 7-6241-1136-5 | 3-1775-6807-3 | ro   | Classe 3   |
    | 7-1858-2781-7 | 0-1353-1411-9 | ro   | Classe 4   |
    | 0-4037-0222-4 | 0-1353-1411-9 | ro   | Classe 5   |
    | 6-7024-5741-3 | 0-1353-1411-9 | ro   | Classe 6   |
    | 2-7357-5864-8 | 0-5670-3537-9 | bu  | Building 1 |
    | 1-0325-7401-1 | 2-7357-5864-8 | fl    | Etage 0    |
    | 7-2642-8830-7 | 2-7357-5864-8 | fl    | Etage 1    |
    | 8-5033-7764-0 | 0-5715-6076-8 | bu  | Building 1 |
    | 3-1775-6807-3 | 8-5033-7764-0 | fl    | Etage 0    |
    | 0-1353-1411-9 | 8-5033-7764-0 | fl    | Etage 1    |
    +--------------------+----------------------+-----+---------------+
    J'aimerai donc faire une requete, qui me donne en retour, le nom de toutes les classe, avec leur ID correspondant, mes surtout, le building dans lequel elles se trouve.

    Comme on peut le voir par exemple la classe 10, appartient au building 1
    En effet, classe 10 a pour parent l'etage 1, qui lui a pour parent le building 1.

    A la main j'arrive faire le select mais en SQL je vois pas ce que ça done.

    Please help me

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    A part en récursif je ne vois pas comment faire.

    Quel est ton SGDB et sa version ?

  3. #3
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    et pas la peine de poster sur 2forum (cf mysql)

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Pour compléter ce que dit Magnus :
    Soit :
    • Tu connais le nombre exact (ou maximal) de niveaux pour atteindre l'enregistrement.
      Tu utilises la représentation intervallaire (il faut avoir le droit de refaire le modèle de la base)
      Tu utilises ORACLE (CONNECT BY)
      Tu utilises un moteur implémentant le WITH RECURSIVE (SQLServer 2005)
      Tu peux écrire du code procédural (PL/SQL T-SQL, etc.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 88
    Par défaut
    Je suis sous Mysql.

    Mes requête sont faites depuis mon prog en programmation Perl.

    Je pense que je devrais reussir a faire une boucle de requete en comparant a ce que l'arrete de ma boucle se fasse si type est un "bu"

    Enfin je sais pas trop

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    A ma connaissance MySQL n'implémente pas les techniques de requêtes récursives telle que définie par la norme SQL 1999 (pour en avoir un aperçu, lire : http://sqlpro.developpez.com/SQL_Server_2K5/N1.php
    paragraphe 1.5 CTE)

    Le seul moyen est de modéliser votre arbre par intervalle afin qu'en une seule requête SELECT vous puissiez obtenir votre réponse.
    A lire :
    http://sqlpro.developpez.com/cours/arborescence/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Comment trouver le premier label avant une class
    Par pierrot10 dans le forum jQuery
    Réponses: 9
    Dernier message: 04/03/2014, 14h31
  2. [JNI] FindClass n'arrive pas à trouver une classe
    Par Benoit_Aligon dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 04/07/2006, 15h40
  3. [RegEx] Trouver les appels statique et dynamique d'une class
    Par jeff_! dans le forum Langage
    Réponses: 8
    Dernier message: 07/04/2006, 16h31
  4. Réponses: 5
    Dernier message: 22/01/2006, 09h10
  5. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 16h48

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