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 de sous requete DEBUTANT


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut Probleme de sous requete DEBUTANT
    Bonsoir a tous

    apres plusieurs essais j'ai un mal fou a inclure une sous requete avec une fonction d'agregation qui renvoie une colonne

    Mon probleme est relativement simple je pense pour certain

    J' ai deux requetes

    La premiere renvois une liste de bien
    L'autre renvois le prix le plus petit de chaque bien.

    aujourd'hui j'aimerais pouvoir reunir c'est deux requetes en une seule

    voici mes requetes
    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
     
    LA REQUETE DE BIEN
     
    SELECT     BienLocation.NumBien, Pays.PaysFR, Villes.Ville, BienLocation.NbrPers, Descriptif.DescriptionFR, Type.TypeFR, Pieces.Pieces, 
                          Tarif.PrixPublicSite
    FROM         Type INNER JOIN
                          Theme INNER JOIN
                          Pieces INNER JOIN
                          Pays INNER JOIN
                          Regions ON Pays.NumPays = Regions.NumPays INNER JOIN
                          Departements INNER JOIN
                          Villes INNER JOIN
                          BienLocation ON Villes.NumVilles = BienLocation.NumVilles ON Departements.NumDepartement = Villes.NumDepartement AND 
                          Departements.NumDepartement = Villes.NumDepartement ON Regions.NumRegion = Departements.NumRegion ON 
                          Pieces.NumPiece = BienLocation.NumPiece INNER JOIN
                          Descriptif ON BienLocation.NumBien = Descriptif.NumBien ON Theme.NumTheme = BienLocation.NumTheme ON 
                          Type.NumType = BienLocation.NumType INNER JOIN
                          Tarif ON BienLocation.NumBien = Tarif.NumBien
    WHERE     (BienLocation.Mandat <> 'aucun')
     
    LA REQUETE DE TARIF
     
    SELECT MIN(PrixPublicSite)AS Tarif FROM Tarif WHERE Annulation=0 GROUP BY NumBien
    J'aimerais pouvoir effectivement rajouter la colonne Tarifs de la deuxieme requete dans ma premiere requete

    merci

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Quelques éléments de réponse :
    1/ tes INNER JOIN en tas, suivis des ON en tas, ça marche ?? C'est en tous cas illisible. Fais tes jointures une à une : JOIN ... ON...
    2/ Donner le même nom (Tarif) à un champ et à une table, c'est pas top pour la lisibilité non plus
    2/ Si tu utilises une clause GROUP BY, tous les champs non agrégatitfs figurant dans SELECT doivent aussi figurer dans GROUP BY et réciproquement. Ta 2ème requête serait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT NumBien, MIN (PrixPublicSite)AS MinPrix 
      FROM Tarif 
      WHERE Annulation=0 
      GROUP BY NumBien
    et il faudrait l'utiliser comme sous-requête dans ta 1ère requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1 .NumBien, Table1. MinPrix, ...
    FROM (SELECT...) Table1
    INNER JOIN...
    Roland

  3. #3
    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
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye :
    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
    SELECT   bl.NumBien, pa.PaysFR, vi.Ville, bl.NbrPers, de.DescriptionFR, 
             ty.TypeFR, pi.Pieces, MIN(ta.PrixPublicSite)
    FROM     BienLocation bl 
               INNER JOIN Villes       vi ON vi.NumVilles      = bl.NumVilles
               INNER JOIN Descriptif   df ON df.NumBien        = bl.NumBien
               INNER JOIN Type         ty ON ty.NumType        = bl.NumType
               INNER JOIN Tarif        ta ON ta.NumBien        = bl.NumBien
               INNER JOIN Theme        th ON th.NumTheme       = bl.NumTheme
               INNER JOIN Pieces       pi ON pi.NumPiece       = bl.NumPiece
               INNER JOIN Departements ds ON ds.NumDepartement = vi.NumDepartement
               INNER JOIN Regions      re ON re.NumRegion      = ds.NumRegion
               INNER JOIN Pays         pa ON pa.NumPays        = ds.NumPays
    WHERE    BienLocation.Mandat <> 'aucun'
    GROUP BY bl.NumBien, pa.PaysFR, vi.Ville, bl.NbrPers, de.DescriptionFR, 
             ty.TypeFR, pi.Pieces
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    bonjour et merci pour vos reponses

    pour repondre a la question de media oui effectivement je me retrouve avec plusieurs lignes pour chaque bien

    le chema de la base est relativement simple

    ma table principal est BienLocation

    NumBien est la cle primaire tous les autres Num sont des clés secondaires

    elles sont toutes en 1 a plusieurs

    La table Descriptif est en relation 1 a 1

    j'ai crée cette table descriptif uniquement parce qu'il n'y a que des champs ntext qui sont pour certain en null et qui me servent uniquement pour la lecture de la langue.

    La finalité de la requete serait evidement de faire

    NumBien Theme Pays Ville Type Pieces NbrPers Description et sont tarif le plus petit

    Merci

  5. #5
    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
    Points : 2 227
    Points
    2 227
    Par défaut
    J'ai fait une bêtise, au lieu de créer un nouveau message, j'ai modifié le précédent, essaye si cela te va...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

Discussions similaires

  1. Probleme de sous requete
    Par Eco dans le forum Hibernate
    Réponses: 7
    Dernier message: 01/09/2008, 11h05
  2. probleme avec sous requete
    Par erox44 dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/12/2007, 14h54
  3. Probleme de sous requete
    Par pooi1 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 13/07/2007, 14h18
  4. [Requête] Calcul extrêmement lent : problème de sous-requêtes ?
    Par laurentcr dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/10/2006, 12h34
  5. probleme de sous requete
    Par JD_Lyon dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/04/2004, 22h18

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