bonsoir, pas facile de choisir un titre en fonction de mon problème :p
bon voila j'ai créé un sur-type "TypeClient" et deux sous type de client (particulier et professionnel)
maintenant je crée ma table client dedans je place un attribut montypeclient de type "TypeClient" (donc du sur-type)
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 CREATE OR REPLACE TYPE TypeClient AS OBJECT ( motDePasse VARCHAR (10), nom VARCHAR (15), adresse VARCHAR (30), dateSouscription DATE ) NOT FINAL; / --Création des sous types CREATE OR REPLACE TYPE TypeParticulier UNDER TypeClient ( prenom VARCHAR(15), dateNaissance DATE ) INSTANTIABLE FINAL; / --creation du sous type professionnel CREATE OR REPLACE TYPE TypeProfessionnel UNDER TypeClient ( siret NUMBER(14), formeJuridique varchar (15) ) INSTANTIABLE FINAL; /
et dans mes insertion j'insert soit un client de type particulier soit un client de type pro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE Client( PK_id NUMBER (5) PRIMARY KEY, mail VARCHAR (30), monTypeClient TypeClient, CONSTRAINT mailUnique UNIQUE (mail) );
tout ce passe très bien sauf que je n'arrive à accéder qu'aux attributs directe de la table (pk_id, mail) ou aux attributs du sur type (TypeClient) (motDePasse,nom,adresse dateSouscription) il m'est en revanche impossible d’accéder aux attributs spécifique d'un des sous type (comme le prenom pour un particulier ou le siret pour un pro)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INSERT INTO Client VALUES (1, 'sarah@laposte.net',TypeParticulier('5ad3kdf4', 'Croche', '9 avenue de la republique', '12.06.2007', 'Sarah', '31.12.1990')); ou INSERT INTO Client VALUES (10, 'citymarket@gmail.com', TypeProfessionnel('afcc81aa', 'CityMarket', '8 impasse des buissons', '31.12.2008', 59845137395706, 'SAS'));
SELECT c.monTypeClient.nom FROM Client c; // fonctionne parfaitement (nom étant dans le surtype)
SELECT c.monTypeClient.prenom FROM Client c; // fonctionne pas prenom étant dans le soustype particulier
auriez vous une suggestion s'il vous plait?
Partager