
/*Oracle 1*/
SELECT * FROM carte_virtuelle WHERE REGEXP_LIKE(carte_artiste, '^(Mar).*');

/*Oracle 2*/
/*1*/
SELECT carte_nom, ser_nom, carte_artiste FROM carte_langue NATURAL JOIN carte_virtuelle INNER JOIN serie
ON carte_virtuelle.ser_code = serie.ser_code
WHERE REGEXP_LIKE(carte_artiste, 'Mark Zug');
/*1 V2*/
SELECT carte_nom, ser_nom, carte_artiste FROM serie,carte_langue NATURAL JOIN carte_virtuelle WHERE
carte_virtuelle.ser_code = serie.ser_code
AND REGEXP_LIKE(carte_artiste, 'Mark Zug');
/*1 V externe pas de resultat different*/
SELECT carte_nom, ser_nom, carte_artiste FROM carte_langue NATURAL JOIN carte_virtuelle LEFT OUTER JOIN serie
ON carte_virtuelle.ser_code = serie.ser_code
WHERE REGEXP_LIKE(carte_artiste, 'Christopher Moeller');

SELECT carte_nom, ser_nom, carte_artiste FROM carte_langue NATURAL JOIN carte_virtuelle RIGHT OUTER JOIN serie
ON carte_virtuelle.ser_code = serie.ser_code
WHERE REGEXP_LIKE(carte_artiste, 'Christopher Moeller');

/*2*/
SELECT * FROM carte_langue INNER JOIN carte_virtuelle
ON carte_langue.carte_id = carte_virtuelle.carte_id;
/*2 V2*/
SELECT * FROM carte_langue, carte_virtuelle
WHERE carte_langue.carte_id = carte_virtuelle.carte_id;
/*2 externe*/
SELECT * FROM carte_langue FULL OUTER JOIN carte_virtuelle
ON carte_langue.carte_id = carte_virtuelle.carte_id;

/*3*/
SELECT CARTE_TEXTE, LANG_NOM  FROM CARTE_LANGUE  , LANGUE WHERE
CARTE_LANGUE.LANG_ID = LANGUE.LANG_ID AND LANG_NOM = 'français';
/*3 V2*/
SELECT CARTE_TEXTE, LANG_NOM  FROM CARTE_LANGUE  NATURAL JOIN LANGUE WHERE
LANG_NOM = 'français';
/*4 liste des nom de carte dans une collection*/
SELECT  CARTE_NOM, COL_NOM FROM CARTE_LANGUE,COLLECTION
WHERE CARTE_ID IN(SELECT CARTE_ID FROM CARTE_LANGUE NATURAL JOIN POSSESSION)
AND COL_ID IN(SELECT COL_ID FROM CARTE_LANGUE NATURAL JOIN POSSESSION);

/*4 V2*/
SELECT  CARTE_NOM, COL_NOM FROM CARTE_LANGUE INNER JOIN COLLECTION
ON CARTE_ID IN(SELECT CARTE_ID FROM CARTE_LANGUE NATURAL JOIN POSSESSION)
AND COL_ID IN(SELECT COL_ID FROM CARTE_LANGUE NATURAL JOIN POSSESSION);

/*Oracle 3*/
SELECT * FROM carte_virtuelle WHERE carte_couleur = 'B'
UNION
SELECT * FROM carte_virtuelle WHERE carte_couleur = 'W';

/*Oracle 4*/
SELECT * FROM carte_virtuelle
MINUS
SELECT * FROM carte_virtuelle WHERE carte_type = 'créature';

/*Oracle 5a*/
SELECT * FROM carte_virtuelle WHERE ser_code =
(SELECT ser_code FROM serie WHERE ser_nom = 'Odyssey');

/*Oracle 5b*/
SELECT DISTINCT CARTE_NOM, CARTE_COULEUR FROM carte_langue, CARTE_VIRTUELLE WHERE carte_langue.carte_id IN
(SELECT carte_id FROM carte_virtuelle WHERE carte_couleur = 'W');


/*Oracle 5c*/
SELECT AVG(cnt.m) FROM
(SELECT COUNT(carte_force) m FROM carte_virtuelle GROUP BY carte_type) cnt;

/*Oracle 5d*/
SELECT * FROM carte_langue WHERE carte_id IN
	(SELECT carte_id FROM carte_virtuelle WHERE ser_code =
(SELECT ser_code FROM serie WHERE ser_nom = 'Tornament'));

/*Oracle 5e Selectionne toute les carte qui on flying en début de description*/
SELECT CARTE_NOM, CARTE_TEXTE FROM CARTE_LANGUE c WHERE
EXISTS(SELECT * FROM CARTE_LANGUE c2 WHERE c.CARTE_TEXTE=c2.CARTE_TEXTE AND c2.CARTE_TEXTE LIKE 'Flying%');

/*Oracle 6 :*/
/*version jointure*/
SELECT sum(POS_QUANTITE), COL_NOM
FROM POSSESSION NATURAL JOIN COLLECTION GROUP BY COL_NOM;
/*version sous-reqête*/
SELECT sum(POS_QUANTITE), COL_NOM
FROM POSSESSION INNER JOIN
(SELECT  COL_NOM , COL_ID FROM COLLECTION) NOM ON POSSESSION.COL_ID = NOM.COL_ID
GROUP BY COL_NOM;

/*Oracle 7*/
SELECT AVG(carte_endurance) FROM carte_virtuelle WHERE carte_type = 'créature';
SELECT count(*) FROM carte_virtuelle WHERE carte_type = 'éphémère';

/*Oracle 8*/
SELECT MAX(carte_force), carte_couleur FROM carte_virtuelle where carte_type = 'créature' GROUP BY carte_couleur;
SELECT COUNT(carte_id), ser_code FROM carte_virtuelle GROUP BY ser_code;
/*Oracle 9*/
SELECT carte_artiste FROM carte_virtuelle GROUP BY carte_artiste HAVING COUNT(carte_id) > 2;
SELECT carte_couleur from carte_langue NATURAL JOIN carte_virtuelle GROUP BY carte_couleur HAVING AVG(carte_force) > 1.3;

/*Oracle Affiche sur une même ligne les noms de carte anglais français de KLD*/

SELECT  C1.CARTE_NOM AS NOM_EN, C2.CARTE_NOM AS NOM_FR
FROM CARTE_LANGUE C1, CARTE_LANGUE C2
WHERE C1.CARTE_ID = C2.CARTE_ID AND C1.LANG_ID = 1 AND C2.LANG_ID = 2 ;

