|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Bonjour,
on considère le schema suivant : VOILIER (Numerovoilier, TypeVoilier, PrixLocation, EtatVoilier, #Base) CLIENT (NumeroClient NomClient, AdresseClient) RESERVATION (NuméroVoilier, NumeroClient, PremierJourLocation, JourRetour) SUCCURSALE (Base, Directeur) Comment exprimer les 2 requetes suivantes ? - quelles sont les bases qui ne louent que des voiliers dont l'état est < 2 ? - quels sont les directeurs de base ayant loué, comme clients, un voilier dans une autre base que celle qu'ils dirigent ? Le mieux serait en algèbre relationnel, mais comme c'est surement difficile à transcrire ici, l'idée de base suffira. Je vois bien des pistes avec des SUMs et des comparaisons, mais peut-être je rate quelque chose ?! ++sputnick; |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
bonjour,
lisez ceci : http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/ En particulier le chapitre sur le prédicat EXISTS (et not exists pour votre 1ere requête) |
|
|
10
|
|
|
#3 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Présente-nous tes requêtes... Nous pourrons alors t'aider à les corriger.
__________________
Modérateur Langage 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 ![]() |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Je dirais pour la première question
Code :
SELECT Base FROM SUCCURSALE WHERE EXISTS (SELECT EtatVoilier FROM VOILIER WHERE EtatVoilier < 2); |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Ok, j'ai trouvé :
Code :
SELECT Base FROM VOILIER WHERE EXISTS (SELECT Base FROM SUCCURSALE) AND EtatVoilier < 2; |
|
|
01
|
|
|
#6 | |||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
bonjour
mais peut etre une jonction serait-elle plus appropriee ? Code :
Citation:
|
|||
|
|
00
|
|
|
#7 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
et pour la seconde,
je verais bien un truc comme cela (mais sans certitude ) ![]() Code :
|
||
|
|
00
|
|
|
#8 | |||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
et en elevant le "AS"
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Code :
|
||
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Citation:
Vous devez vérifiez qu'une base n'a pas de voilier avec un état supérieur ou égale à 2 tout en ayant des voilier avec un état inférieur a 2. Vous aurez donc besoin de 2 sous-requete en utilisant EXISTS et NOT EXISTS |
|
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Youhou, pour la première j'ai trouvé un truc simple et propre :
Code :
|
||
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Encore faux.
Faites vous un jeu de test ! |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Oui, merci je m'en suis rendu compte, ce pourquoi on trouves une proposition plus heureuse au dessus.
|
|
|
00
|
|
|
#15 | |||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
re bonjour
Citation:
![]() Citation:
Citation:
|
|||
|
|
00
|
|
|
#16 | |||||||||
![]() ![]() |
Pour écrire une requête qui semble complexe, il faut décomposer le problème.
Citation:
Citation:
Code :
Code :
Sélectionner les bases de la table VOILIER où il y a des voiliers dont l'état est inférieur à 2 et pour lesquelles il n'existe pas de voiliers de la même base dont l'état est supérieur à 1. Citation:
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||||||
|
00
|
|
|
#17 | |||
![]() ![]() |
Citation:
Requête : Code sql :
__________________
Email : http://scr.im/waldar |
|||
|
10
|
|
|
#18 |
![]() ![]() |
Bravo Waldar ! Tu as trouvé la meilleure requête je pense !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 14 ![]() |
Merci beaucoup, on voit les gars qui jouent avec de la requete de façon quotidienne, c'est beau à voir !
Voici ce que j'ai pondu en Latex et algèbre relationnel pour la question quelles sont les bases qui ne louent que des voiliers dont l'état est < 2 ? <AUTO_CENSURE>faux</AUTO_CENSURE> Et pour la question Quels sont les directeurs de base ayant loué, comme clients, un voilier dans une autre base que celle qu'ils dirigent : ![]() Edit et PS : Spécial BIG UP à CinePhil pour avoir expliqué en détail sa démarche, au final c'est presque plus intéressant que la concision de Waldar |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com