Академический Документы
Профессиональный Документы
Культура Документы
Syntaxe Restrictions
● Syntaxe : TABLE (collection_expression) [ [AS] L'expression de collection doit retourner une
alias] [(derived_columns)] seule collection.
● Exemple : SELECT cdate FROM TABLE(
(SELECT contact_dates FROM customer
SELECT cdate FROM TABLE( (SELECT where customer_num >= 503)) c_table (cdate)
contact_dates FROM customer where
#^
customer_num = 503) ) c_table (cdate)
● Resultats: # 284: A subquery has returned not exactly one
row.
cdate
1998-08-02 #
1998-08-03
V 0.2 Hassène FARHAT 7 V 0.2 Hassène FARHAT 8
Restrictions Restriction avec l'utilisation des CDT
● Single Collection Column Only ● Une CDT est en lecture seule : pas d'insertion,
SELECT cdate FROM TABLE( update, delete juste select.
● Si le type de collection est LIST, la CDT ne
(SELECT contact_dates a, contact_dates b
préserve pas l'ordre.
FROM customer where customer_num = 503 ● La CDT doit être indépendante des autres
) c_table (cdate)
tables dans la clause from
#^ ● SELECT COUNT(*) FROM parents,
# 574: A subquery has returned not exactly one TABLE(parents.children) c_table WHERE
column. parents.id = 1001
● retourne une erreur car parents.children
#
V 0.2 Hassène FARHAT 9 V 0.2
dépend de la table Hassène
parentsFARHAT 10
Exercices Solutions
● Créer une table VIP contenenat les informations : ● CREATE TABLE vips (
vip_num SERIAL, first name, last name, vipnum SERIAL,
children SET contient un type un-named row fname VARCHAR(30),
contenant le nom et la date de naissance de l'enfant lname VARCHAR(30),
children SET(ROW(cname VARCHAR(30),bday
● Ajouter les enregistrements suivants : DATE) NOT NULL) );
– VIP: JAMES DILLMAN ,Children: JOHN ● INSERT INTO vips VALUES ( 0, “JAMES”,
Solution
●SELECT fname, lname, ( SELECT c_table.bday
FROM TABLE (vips.children) c_table WHERE
c_table.cname = “JOHN” ) johns_bday
FROM vips WHERE vipnum = 1;
Resultats: Bibliographie
Using Collection Subqueries and Derived Tables, Informix Software, 2000
fname lname johns_bday
JAMES DILLMAN 02/08/1981