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

SQL Oracle Discussion :

Aide requete sql


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Par défaut Aide requete sql
    bonjour ,
    j'ai deux tables T1(chef,plat) et T2(resto,plat)
    j'ai fait cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select chef ,r from (select count("plat") nb,"resto" r,chef from 
    (SELECT T2.resto, T1.chef ,T1.plat
             FROM T1, T2
             WHERE T1.plat = T2.plat 
    )
    group by resto,chef)
    where nb=(
    select count("plat") nb_plat from T2
    where r=T2.resto
    group by resto)
    Je veux afficher les couples (chef,resto) tel que chef cuisine seulement tous les plats proposés par resto sauf que ça ne me donne pas le bon résultat quelq'un peut m'aider.
    Soit T1:
    c1---p1
    c1---p2
    c1---p3
    c2---p2
    c2---p3
    c3---p3
    T2 :
    r1---p1
    r1---p2
    r1---p3
    r2---p1
    r2---p4
    r3---p2
    j'ai obtenu c1-r1
    c1-r2
    c2-r3

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Je n'ai pas les moyens de tester mais il me semble que cela devrait fonctionner :
    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
    SELECT  DISTINCT
            rst.resto
        ,   chf.chef
    FROM    T2  rst
        INNER JOIN
            T1  chf
            ON  rst.plat = chf.plat
    WHERE   NOT EXISTS
            (   SELECT  1
                FROM    T2  crt
                WHERE   rst.resto = crt.resto
                    AND NOT EXISTS
                        (   SELECT  1
                            FROM    T1  cap
                            WHERE   cap.chef = chf.chef  
                                AND cap.plat = crt.plat  
                        )                
            )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Par défaut
    ça me donne le même résultat .
    mais normalement , je ne devrais pas avoir c2-r3 car c2 cuisine autre plat qui n'est pas celui de r3 .

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    J'avais mal compris la question. Peut-être une question de formulation...
    Je m'étais arrêté à "rechercher les chefs qui préparent tous les plats du restaurant". Mais il fallait ajouter "et seulement ceux-là".

    Il suffit donc d'ajouter une restriction qui inverse les propositions de la première. Si tu as compris le raisonnement, ce n'est plus très compliqué
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Par défaut
    EN fait , je l'ai compris comme étant un division exacte mais au lieu que ça soit sur toute une table mais seulement sur une partie . Mais là je bloque .Est ce que tu peux être un peu plus clair pour ton explication
    Merci

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Cette requête-ci à l'air de fonctionner.
    Il y a aussi une solution analytique comme sur votre précédent sujet :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    WITH t1 AS
    (
    SELECT 'c1' AS chef, 'p1' AS plat FROM dual union ALL 
    SELECT 'c1'        , 'p2'         FROM dual union ALL 
    SELECT 'c1'        , 'p3'         FROM dual union ALL 
    SELECT 'c2'        , 'p2'         FROM dual union ALL 
    SELECT 'c2'        , 'p3'         FROM dual union ALL 
    SELECT 'c3'        , 'p3'         FROM dual
    ) 
      ,  t2 AS
    (
    SELECT 'r1' AS resto, 'p1' AS plat FROM dual union ALL
    SELECT 'r1'         , 'p2'         FROM dual union ALL
    SELECT 'r1'         , 'p3'         FROM dual union ALL
    SELECT 'r2'         , 'p2'         FROM dual union ALL
    SELECT 'r2'         , 'p3'         FROM dual union ALL
    SELECT 'r3'         , 'p4'         FROM dual
    )
      ,  NB_PC AS
    (
      SELECT chef, count(distinct plat) as nb_pc
        FROM t1
    GROUP BY chef          
    )
      ,  NB_PR AS
    (
      SELECT resto, count(distinct plat) as nb_rc
        FROM t2
    GROUP BY resto          
    )        
      SELECT t1.chef, t2.resto
        FROM t1
             INNER JOIN NB_PC nc
               ON nc.chef = t1.chef
             INNER JOIN t2
               ON t2.plat = t1.plat
             INNER JOIN NB_PR nr
               ON nr.resto = t2.resto
       WHERE nc.nb_pc = nr.nb_rc
    GROUP BY t1.chef, t2.resto, nc.nb_pc
      HAVING nc.nb_pc = count(*)
    ORDER BY t1.chef asc, t2.resto asc;
     
    CHEF	RESTO
    c1	r1
    c2	r2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [InterBase 6] Aide Requete SQL
    Par cyrilleT dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/06/2006, 10h45
  2. aide requete sql access 2000
    Par bab69 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/05/2006, 20h56
  3. Aide requete SQL ou fonction VBA
    Par nykola7 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/03/2006, 17h51
  4. Besoin d'aide requete sql
    Par dinde dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/10/2005, 09h09
  5. [Aide requete SQL]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 22/04/2005, 17h00

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