ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Σχετικά έγγραφα
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7β: SQL (Πρακτική Εξάσκηση 1) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7α: SQL (NULL, Διαίρεση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Βάσεις Δεδομένων Ι. Παραδείγματα. Γεώργιος Ευαγγελίδης, Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ηλεκτρονικοί Υπολογιστές II

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Ηλεκτρονικοί Υπολογιστές II

PHP 3. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 2: Μοντελο Συσχετίσεων Οντοτήτων, Μελέτη Περίπτωσης: Η βάση δεδομένων των CD

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Ηλεκτρονικοί Υπολογιστές II

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Αρχεία και Βάσεις Δεδομένων

Λογιστικές Εφαρμογές Εργαστήριο

Ηλεκτρονικοί Υπολογιστές II

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Ιστορία της μετάφρασης

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων

Βάσεις Περιβαλλοντικών Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Ηλεκτρονικοί Υπολογιστές II

Βάσεις Περιβαλλοντικών Δεδομένων

Υπολογιστικά & Διακριτά Μαθηματικά

Θεωρία Πιθανοτήτων & Στατιστική

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τεχνολογία Πολιτισμικού Λογισμικού

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 9: Απείρως επαναλαμβανόμενα παίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Εισαγωγή στους Αλγορίθμους

Εκκλησιαστικό Δίκαιο

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Περιβαλλοντική Χημεία

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μικροβιολογία & Υγιεινή Τροφίμων

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Εκκλησιαστικό Δίκαιο

Αρχεία και Βάσεις Δεδομένων

Εισαγωγή στους Αλγορίθμους

ΑΝΑΛΥΣΗ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ

Λογική. Δημήτρης Πλεξουσάκης. Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συνδυαστική Ανάλυση Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Βάσεις Περιβαλλοντικών Δεδομένων

Μοντελοποίηση Λογικών Κυκλωμάτων

Οικονομικά Μαθηματικά

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Διοικητική Λογιστική

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 5: Προτασιακός Λογισμός: Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.


Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Διδακτική της Πληροφορικής

Οικονομία των ΜΜΕ. Ενότητα 7: Μορφές αγοράς και συγκέντρωση των ΜΜΕ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Πληροφορική. Εργαστηριακή Ενότητα 6 η : Ταξινόμηση & Ομαδοποίηση Δεδομένων

Υπολογιστικά & Διακριτά Μαθηματικά

Διαδικαστικός Προγραμματισμός

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 7: Τέλεια ισορροπία Nash για υποπαίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

τατιςτική ςτην Εκπαίδευςη II

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Υδραυλικά & Πνευματικά ΣΑΕ

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

Διδακτική της λογοτεχνίας Ασκήσεις

Ιστορία της μετάφρασης

Εκκλησιαστικό Δίκαιο Ι (Μεταπτυχιακό)

Εργαστήριο Χημείας Ενώσεων Συναρμογής

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΝΟΜΙΣΜΑΤΙΚΗ ΟΙΚΟΝΟΜΙΚΗ ΠΟΛΙΤΙΚΗ. Ενότητα 3: Αγορά Χρήματος και επιτόκια. Γεώργιος Μιχαλόπουλος Τμήμα Λογιστικής-Χρηματοοικονομικής

Πληροφοριακά Συστήματα & Περιβάλλον Ασκήσεις

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Αξιολόγηση στο Σχεδιασμό του Χώρου

Στατιστική Επιχειρήσεων Ι

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους

Αυτοματοποιημένη χαρτογραφία

Συμπεριφορά Καταναλωτή

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Transcript:

Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Query 06 -- Τα ονόματα (name) των ερμηνευτών οι -- οποίοι συμπεριλαμβάνονται σε ΟΛΑ τα CDs -- της εταιρίας με κωδικό 2. 4

Query 06α -- υλοποίηση της διαίρεσης με διπλή άρνηση, -- δηλαδή, οι ερμηνευτές για τους οποίους δεν -- υπάρχει cd της εταιρίας 2 που να μην περιέχει -- track τους select name from performer where not exists (select * from cd where comid=2 and not exists (select * from track where track.pid=performer.pid and track.cid=cd.cid)) 5

Query 06β -- η δεύτερη select βρίσκει όλα τα cd της εταιρίας -- 2 και η τρίτη όλα τα cd του κάθε ερμηνευτή, -- οπότε η διαφορά τους είναι κενή όταν ο -- ερμηνευτής συμμετέχει σε όλα τα cd της -- δεύτερης select select name from performer where not exists ((select cid from cd where comid=2) minus (select cid from track where track.pid=performer.pid)) 6

Query 07 -- Ονόματα ερμηνευτών που κυκλοφόρησαν -- track σε καθεμιά από τις χρονιές που είναι -- καταχωρημένες στη βάση (δηλαδή υπάρχει -- τουλάχιστον ένα track τους σε κάποιο cd για -- όλες τις καταχωρημένες χρονιές). 7

Query 07α -- οι ερμηνευτές για τους οποίους δεν υπάρχει -- καταχωρημένη χρονιά στην οποία να μην έχει -- κυκλοφορήσει cd με track που εκτελούν select name from performer where not exists (select * from cd where year not in (select year from cd where cid in (select cid from track where pid=performer.pid))) 8

Query 07β -- το ίδιο με μικρή παραλλαγή: η δεύτερη select -- βρίσκει όλες τις χρονιές στις οποίες έχει -- κυκλοφορήσει cd (οι καταχωρημένες χρονιές) -- και η τρίτη select βρίσκει όλες τις χρονιές στις -- οποίες κυκλοφόρησε cd με track που εκτελεί -- ένας συγκεκριμένος ερμηνευτής, οπότε η -- διαφορά είναι κενή όταν ο συγκεκριμένος -- ερμηνευτής έχει κυκλοφορήσει track σε όλες τις -- χρονιές 9

Query 07β (συνέχεια) select name from performer where not exists ((select year from cd) minus (select year from track inner join cd on track.cid=cd.cid where track.pid=performer.pid)) 10

Query 08 -- Οι τίτλοι των cd που έχουν την -- αποκλειστικότητα σε ένα τουλάχιστον track -- τους, δηλαδή, όπου το αντίστοιχο τραγούδι δεν -- περιέχεται σε άλλο cd. 11

Query 08α -- τα cd που έχουν track (t1.cid=cd.cid) που -- αντιστοιχεί σε τραγούδι που δεν υπάρχει -- (t1.sid=t2.sid) και σε άλλο cd (t1.cid<>t2.cid), -- δηλαδή, αυτό ακριβώς που διατυπώνει το -- ερώτημα select ctitle from cd where exists (select * from track t1 where t1.cid=cd.cid and not exists (select * from track t2 where t1.sid=t2.sid and t1.cid<>t2.cid)) 12

Query 08β -- το ίδιο με in/not in αντί exists/not exists select ctitle from cd where cid in (select cid from track t1 where sid not in (select sid from track t2 where t1.cid<>t2.cid)) 13

Query 08γ -- η δεύτερη select βρίσκει τα τραγούδια του κάθε -- ενός cd και η τρίτη όλα τα τραγούδια με -- μοναδική εμφάνιση, οπότε η τομή είναι μη κενή -- όταν το συγκεκριμένο cd έχει τουλάχιστον ένα -- αποκλειστικό τραγούδι select ctitle from cd where exists ((select sid from track where track.cid=cd.cid) intersect (select sid from track group by sid having count(*)=1)) 14

Query 08δ -- η δεύτερη select βρίσκει τα τραγούδια του κάθε -- ενός cd και η τρίτη όλα τα τραγούδια με μη -- μοναδική εμφάνιση, οπότε η διαφορά είναι μη -- κενή όταν το συγκεκριμένο cd έχει τουλάχιστον -- ένα αποκλειστικό τραγούδι select ctitle from cd where exists ((select sid from track where track.cid=cd.cid) minus (select sid from track group by sid having count(*)>1)) 15

Query 09 -- Οι τίτλοι των cd στα οποία δεν υπάρχει -- τραγούδι που να υπάρχει σε άλλο cd. 16

Query 09α -- τα cd που δεν έχουν track (t1.cid=cd.cid) που -- να αντιστοιχεί σε τραγούδι που υπάρχει -- (t1.sid=t2.sid) και σε άλλο cd (t1.cid<>t2.cid), -- δηλαδή, αυτό ακριβώς που διατυπώνει το -- ερώτημα select ctitle from cd where not exists (select * from track t1 where t1.cid=cd.cid and exists (select * from track t2 where t1.cid<>t2.cid and t1.sid=t2.sid)) 17

Query 09β -- το ίδιο με not in/in αντί not exists/exists select ctitle from cd where cid not in (select cid from track t1 where sid in (select sid from track t2 where t1.cid<>t2.cid)) 18

Query 09γ -- ξανά το ίδιο με not exists/in (προφανώς μπο- -- ρούν να γίνουν όλοι οι δυνατοί συνδυασμοί) select ctitle from cd where not exists (select * from track t1 where t1.cid=cd.cid and t1.sid in (select t2.sid from track t2 where t1.cid<>t2.cid)) 19

Query 09δ -- ξανά το ίδιο με not exists και σύζευξη: η -- εμφώλευση της 2ης και 3ης select μετατράπηκε -- σε σύζευξη select ctitle from cd where not exists (select * from track t1, track t2 where t1.sid=t2.sid and t1.cid<>t2.cid and t1.cid=cd.cid) 20

Query 09ε -- αφού το αρχικό ερώτημα μπορεί να διατυπωθεί -- και ως "τα cd που όλα τα τραγούδια τους είναι -- αποκλειστικά" έχουμε την περίπτωση διαίρεσης -- με δυο αρνήσεις: τα cd που δεν έχουν τραγούδι -- που να μην είναι αποκλειστικό select ctitle from cd where cid not in (select cid from track where sid not in (select sid from track group by sid having count(*)=1)) 21

Query 09 (συνέχεια) -- Είναι ενδιαφέρον να δείτε τις ομοιότητες και -- διαφορές των παρακάτω δυο λύσεων με τις -- αντίστοχες λύσεις του ερωτήματος Query 08 22

Query 09ζ -- η δεύτερη select βρίσκει τα τραγούδια του κάθε -- ενός cd και η τρίτη όλα τα τραγούδια με -- μοναδική εμφάνιση, οπότε η διαφορά είναι κενή -- όταν το συγκεκριμένο cd έχει όλα τα τραγούδια -- του αποκλειστικά select ctitle from cd where not exists ((select sid from track where track.cid=cd.cid) minus (select sid from track group by sid having count(*)=1)) 23

Query 09η -- η δεύτερη select βρίσκει τα τραγούδια του κάθε -- ενός cd και η τρίτη όλα τα τραγούδια με μη -- μοναδική εμφάνιση, οπότε η τομή είναι κενή -- όταν το συγκεκριμένο cd έχει όλα τα τραγούδια -- του αποκλειστικά select ctitle from cd where not exists ((select sid from track where track.cid=cd.cid) intersect (select sid from track group by sid having count(*)>1)) 24

Query 10 -- Οι τίτλοι των cd που περιέχουν μόνο μη -- αποκλειστικά τραγούδια (δηλαδή, όλα τα -- τραγούδια υπάρχουν και σε κάποιο άλλο cd). -- Στα παρακάτω μελετήστε τις ομοιότητες και -- διαφορές με το q9. Μπορούμε και εδώ να -- έχουμε αντίστοιχες λύσεις με αυτές του -- ερωτήματος q9. Ενδεικτικά: 25

Query 10α -- το ερώτημα μπορεί να διατυπωθεί και ως "οι -- τίτλοι των cd που δεν έχουν τραγούδι που να -- μην υπάρχει και σε άλλο cd", οπότε η -- παρακάτω λύση βρίσκει τα cd που δεν έχουν -- τραγούδι (t1.cid=cd.cid) που να μην υπάρχει -- (t1.sid=t2.sid) και σε άλλο cd (t1.cid<>t2.cid), -- δηλαδή, αυτό ακριβώς που διατυπώνει το -- ερώτημα 26

Query 10α (συνέχεια) select ctitle from cd where not exists (select * from track t1 where t1.cid=cd.cid and not exists (select * from track t2 where t1.cid<>t2.cid and t1.sid=t2.sid)) 27

Query 10β -- επίσης, το ερώτημα μπορεί να διατυπωθεί και -- ως "οι τίτλοι των cd που όλα τα τραγούδια τους -- είναι μη αποκλειστικά", οπότε πρόκειται για -- διαίρεση και μια λύση είναι η διπλή άρνηση "οι -- τίτλοι των cd που δεν έχουν τραγούδι που να -- μην είναι μη αποκλειστικό" select * from cd where cid not in (select cid from track where sid not in (select sid from track group by sid having count(*)>1)) 28

Query 10γ -- υλοποίηση με διαφορά (γίνεται και με τομή) select * from cd where not exists ((select sid from track where track.cid=cd.cid) minus (select sid from track group by sid having count(*)>1)) 29

Query 11 -- Τα ονόματα ερμηνευτών που έχουν μόνο -- "solo" cd (δηλαδή μόνο cd στα οποία υπάρχουν -- μόνο δικά τους τραγούδια και όχι άλλων -- ερμηνευτών). 30

Query 11α -- Μπορούμε να διατυπώσουμε το ερώτημα αυτό -- κατ' αντιστοιχία του Query 09: "Οι ερμηνευτές -- που δεν έχουν cd που να περιέχει άλλους -- ερμηνευτές", οπότε προκύπτουν πάλι όλες οι -- αντίστοιχες λύσεις. Ενδεικτικά: select name from performer where pid not in (select pid from track t1 where cid in (select cid from track t2 where t1.pid<>t2.pid)) 31

Query 11β select name from performer where not exists (select * from track t1 inner join track t2 on t1.cid=t2.cid where performer.pid=t1.pid and t1.pid<>t2.pid) 32

Query 12 -- Αν μας ζητούσαν τους ερμηνευτές που -- έχουν τουλάχιστον ένα "solo" cd, ορίστε και μια -- φευγάτη λύση: η δεύτερη select ομαδοποιεί τα -- τραγούδια ως προς cd και performer και κρατά -- εκείνα τα group που έχουν πλήθος τραγουδιών -- ίσο με το πλήθος τραγουδιών του -- συγκεκριμένου cd, άρα το cd περιέχει μόνο -- τραγούδια ενός ερμηνευτή! 33

Query 12 (συνέχεια) select name from performer where pid in (select pid from track t1 group by cid, pid having count(pid)= (select count(*) from track t2 where t2.cid=t1.cid)) 34

Τέλος Ενότητας