Conditions sur tables jointes
Bonjour à tous,
Ca fait un petit moment que je me casse la tête sur une requête.
Tout d'abord voici le schéma de la base :
http://img530.imageshack.us/img530/6958/bddbg3.th.jpg
et le code SQL de création de la base (c'est toujours plus précis) :
Code:
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/*==============================================================*/
/* Table : CONTRAT */
/*==============================================================*/
create table CONTRAT (
ID_CONTRAT int not null,
ID_DOSSIER int null,
MONTANT_CONTRAT_HT int null,
MONTANT_CONTRAT_TTC int null,
constraint PK_CONTRAT primary key (ID_CONTRAT)
)
go
/*==============================================================*/
/* Table : DEVIS */
/*==============================================================*/
create table DEVIS (
ID_DEVIS int not null,
ID_DOSSIER int null,
MONTANT_DEVIS_HT int null,
MONTANT_DEVIS_TTC int null,
constraint PK_DEVIS primary key (ID_DEVIS)
)
go
/*==============================================================*/
/* Table : DOSSIER */
/*==============================================================*/
create table DOSSIER (
ID_DOSSIER int not null,
constraint PK_DOSSIER primary key (ID_DOSSIER)
)
go
/*==============================================================*/
/* Table : GARANTIE */
/*==============================================================*/
create table GARANTIE (
ID_GARANTIE int null,
ID_CONTRAT int null,
ID_DEVIS int null,
MONTANT_GARANTIE_HT int null,
MONTANT_GARANTIE_TTC int null
)
go
alter table CONTRAT
add constraint FK_CONTRAT_DOSSIER foreign key (ID_DOSSIER)
references DOSSIER (ID_DOSSIER)
go
alter table DEVIS
add constraint FK_DOSSIER_DEVIS foreign key (ID_DOSSIER)
references DOSSIER (ID_DOSSIER)
go
alter table GARANTIE
add constraint FK_GARANTIE_CONTRAT foreign key (ID_CONTRAT)
references CONTRAT (ID_CONTRAT)
go
alter table GARANTIE
add constraint FK_GARANTIE_DEVIS foreign key (ID_DEVIS)
references DEVIS (ID_DEVIS)
go |
Bon alors maintenant mon problème est le suivant. Je veux sélectionner tous les dossiers pour lequel au moins un des montants vaut une certaine valeur (fixée).
J'ai plusieurs soucis : tout d'abord un dossier n'a pas forcément de devis ou de contrat -> obligation de faire un left outer join. Le second c'est que du moment que n'importe quel montant est égal à la valeur fixée alors le dossier correspondant doit appartenir à l'ensemble résultat.
J'utilise Hibernate 3.0.5 mais si c'est plus simple à faire en 3.2 je peux changer de version.
Le but est de réaliser cette requête en utilisant des Criteria.
Merci pour votre aide