Forum Programmation.SQL aidez_moi!!

Posté par .
Tags : aucun
0
21
juin
2006
salut tt le monde!!
voici les tables

immeubles(ADRESSE ,datecons)
appartement(ADRESSE, NUMAPP, proprio)
personne(NOM,age,adresse,numapp)

on me demande les noms des personnes qui sont propriétaires de tous les appart d'au moins un immeuble. que faire??
  • # reformuler la question ;)

    Posté par . Évalué à 3.

    Salut,
    Le titre du sujet est des plus vagues ...

    Pour traiter le probléme reformule la question.
    Un immeuble appartient a un proprio s'il n'existe pas d'appartement appartenant à un autre proprio dans cette immeuble.

    Aprés ...
  • # Pas forcément très propre...

    Posté par . Évalué à 1.

    Comme dit plus haut, il faut aller chercher les proprios des appartements qui ne sont pas dans la liste des appartements ayant plusieurs proprios, ce qui peut se résumer ainsi :
    SELECT DISTINCT PROPRIO FROM APPARTEMENT WHERE ADRESSE NOT IN ( SELECT DISTINCT A.ADRESSE FROM APPARTEMENT A, APPARTEMENT B WHERE A.ADRESSE = B.ADRESSE AND A.PROPRIO <> B.PROPRIO )
    Guilhelm
    • [^] # Re: Pas forcément très propre...

      Posté par . Évalué à 0.

      Comme dit plus haut, il faut [...]

      Non. "On peut" faire ainsi. Mais, en SQL, il y a souvent bien plus d'une façon de le faire... J'en ai donné une au-dessous, mais je pense qu'une solution basée sur une division relationnelle est aussi possible (juste une idée comme ça, je n'ai pas cherché comment la faire).
  • # Escuse-moi et je me trompe peut-être

    Posté par . Évalué à 7.

    Mais je crois qu'on ne te demande pas que "les noms des personnes qui sont propriétaires de tous les appart d'au moins un immeuble." mais qu'on te demande surtout "de réfléchir par toi-même".
    • [^] # Re: Escuse-moi et je me trompe peut-être

      Posté par . Évalué à 1.

      Merci à tous ceux qui ont pris la peine de m'aider!! En ce qui concerne KIKOUN, je voudrai que tu saches qu'avant d'avoir eu recours à ce forum j'ai bcp réfléchi et j'avais abouti à une requete assez longue que j'avais montré au prof qui m'a dit que je devais trouver un truc un peu plus court et que ce que je fais ne doit pas marcher (tu sé tt le monde n'est pas doué en sql!!)
      Merci une autre fois à tous ceux qui ont pris la peine de m'aider!!
    • [^] # Re: Escuse-moi et je me trompe peut-être

      Posté par . Évalué à 0.

      Merci à tous ceux qui ont pris la peine de m'aider!!
      En ce qui concerne Kikoun , je voudrai te dire qu'avant d'avoir eu recours à ce forum j'ai bcp réfléchi et que j'avé abouti à une requete assez longue et le prof m'a dit que ça ne devait pas marcher (tu sé tt le monde n'est pas doué en sql...e ne suis u'une débutante!!).Merci une autre fois à toux ceux qui m'ont aidé!!
  • # Requête imbriquée + jointure

    Posté par . Évalué à 0.

    Une idée qui me vient, par forcément optimisée: on recherche d'abord les immeubles qui n'ont qu'un propriétaire:
    SELECT   B.ADRESSE
    FROM     APPARTEMENT B
    GROUP BY B.ADRESSE
    HAVING   COUNT(B.PROPRIO) = 1
    Puis on détermine les noms des propriétaires de ces immeubles:
    SELECT DISTINCT P.NOM
    FROM   PERSONNE P
           JOIN APPARTEMENT A
               ON P.NOM=A.PROPRIO
    WHERE  A.ADRESSE in (SELECT B.ADRESSE
                         FROM APPARTEMENT B
                         GROUP BY B.ADRESSE
                         HAVING COUNT(B.PROPRIO) = 1)
    En fait, cette requête détermine les noms des propriétaires de chaque appartement dont l'adresse est celle d'un immeuble n'ayant qu'un propriétaire, puis on fait un "DISTINCT" sur cette liste. (devant traiter au quotidien des requêtes infâmes faisant des jointures à plus de 10 tables, je suis assez pointilleux sur l'indentation de mon SQL ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.