SQL Data Manipulation Language

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

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

SQL Data Manipulation Language

Σχεσιακή Άλγεβρα - Διαίρεση

Σχεσιακή Άλγεβρα Relational Algebra

Σχεσιακός Λογισμός Πλειάδων

SQL: Συναρτήσεις Συνάθροισης

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

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

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

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. Σχεσιακός Λογισμός

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

Τμήμα Πληροφορικής ΑΠΘ

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη

Φροντιστήριο Σχεσιακή Άλγεβρα (μέρος 2 ο ) - Σχεσιακός Λογισμός Δημητράκη Κατερίνα

ΗΥ360 Αρχεία και Βάσεις Δεδομένων. Φροντιστήριο στην Σχεσιακή Άλγεβρα.

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

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

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα

Βάσεις Δεδομένων (Databases)

Τμήμα Πληροφορικής ΑΠΘ


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

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Μοντέλο Οντοτήτων Σχέσεων (Entity-Relationship Model)

Βάσεις Δεδομένων Σύνθετα SQL queries

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων Ι SQL Μέρος 2 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

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


Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

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

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

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

Σχεδίαση Βάσεων Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Βάσεις Δεδομένων (Databases)

ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ. Tο Σχεσιακό Μοντέλο Σελίδα 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Τμήμα Πληροφορικής ΑΠΘ

Εργαστήριο Σημασιολογικού Ιστού

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

Διδάσκων: Παναγιώτης Ανδρέου

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

Βάσεις δεδομένων. (4 ο μάθημα) Ηρακλής Βαρλάμης

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Η SQL ως γλώσσα τροποποίησης Δεδομένων

Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Τεχνοοικονομική Ανάλυση Οργάνωση και Διοίκησης Έργων και Επιχειρήσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Κεφάλαιο 9 Συναθροίσεις

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Διάλεξη 15: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) III. Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

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

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 5 21/02/2012

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Τμήμα Διοίκησης Επιχειρήσεων

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

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

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Lecture 14: SQL DML I

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Σχεδιασμός Βάσεων Δεδομένων

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

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

1. ΑΝΟΙΞΤΕ ΤΟΝ ΠΙΝΑΚΑ CUSTOMER ΚΑΙ ΣΤΟ ΜΕΝΟΥ ΕΠΙΛΕΞΤΕ

Transcript:

Εμφωλευμένες επερωτήσεις (Nested Queries) Μια εντολή select μπορεί να περιέχει μια άλλη εντολή select αλλά υπό περιορισμούς Μια εντολή select που εμφανίζεται μέσα σε μια άλλη εντολή select ονομάζεται subselect. Ένα subselect μπορεί να εμφανίζεται στην πρόταση where με διάφορους τρόπους Λογικά κατηγορήματα χρησιμοποιούνται για να γίνονται έλεγχοι στα subselects Απαίτηση: μια σχέση στην πρόταση from δε μπορεί να είναι το αποτέλεσμα μιας εντολής select, πρέπει να είναι μια υπάρχουσα σχέση. 1

Το κατηγόρημα ΙΝ χρησιμοποιείται για να ελέγξει αν πλειάδες ανήκουν σε μια σχέση. Χρησιμοποιείται με μια πρόταση select ή ένα ρητά απαριθμημένο σύνολο Παραδείγματα: «Βρείτε τα ids των πελατών που κάνουν παραγγελίες μέσω πρακτόρων με έδρα τη NY ή το Dallas» SQL: select cid from Orders where aid in ( select aid from agents where city= NY or city= Dallas ) ; Επιστρέφει τους πράκτορες των οποίων η έδρα είναι η NY ή το Dallas Επιστρέφει όλα τα αναγνωριστικά των πελατών από τις πλειάδες εκείνες των οποίων η τιμή aid ανήκει στα αποτελέσματα του εμφωλευμένου select. 2

Το κατηγόρημα ΙΝ χρησιμοποιείται για να ελέγξει αν πλειάδες ανήκουν σε μια σχέση με μια πρόταση select ρητά απαριθμημένο σύνολο Παραδείγματα: 1. «Βρείτε τους πράκτορες με έδρα το Chicago ή το Dallas». SQL: select * from Agents where city in ( Chicago, Dallas ) ; 2. «Βρείτε τα ονόματα και τις εκπτώσεις των πελατών που κάνουν παραγγελίες μέσω πρακτόρων με έδρα το Chicago ή το Dallas». SQL: select cname, discount from Customers where cid in ( select cid from Orders where aid in (select aid from Agents where city in ( Chicago, Dallas ) ) ; Τα ονόματα των γνωρισμάτων σχετίζονται με τις σχέσεις του πλησιέστερου σχέσης select. 3

Παραδείγματα: 3. «Βρείτε τα ονόματα των πελατών που παραγγέλνουν το προϊόν p05». SQL (1) : select distinct cname from Customers, Orders where Customers.cid = Orders.cid and Orders.pid = p05 SQL (2) : select distinct cname from Customers where p05 in (select pid from Orders where cid = Customers.cid) ; 4

Κατηγορήματα Σύγκρισης με Ποσοδείκτες (Quantified Comparison Predicates) χρησιμοποιούνται για τη σύγκριση της τιμής μιας έκφρασης με το αποτέλεσμα μιας εντολής select γενική μορφή: expr θ {any all} (subselect), θ {,,,,, } συνολικά 12 κατηγορήματα μπορούν να οριστούν Η έκφραση expr θ any (subselect) είναι αληθής αν για τουλάχιστον ένα στοιχείο s στο αποτέλεσμα του subselect η έκφραση expr θ s είναι αληθής Η έκφραση expr θ all (subselect) είναι αληθής αν για όλα τα στοιχεία s στο αποτέλεσμα του subselect η έκφραση expr θ s είναι αληθής 5

Agents(aid, aname,city,percent) Παραδείγματα: 1. Βρείτε τα ids των πρακτόρων με το μικρότερο ποσοστό προμήθειας. select aid from agents where percent <= all (select percent from agents); Customers(cid, cname,city,discnt) 2. Βρείτε τα ονόματα των πελατών που έχουν την ίδια έκπτωση με τους πελάτες στις πόλεις Dallas ή Boston. select cname from customers where discnt = any (select discnt from customers where city = Dallas or city = Boston ); 6

Customers(cid, cname,city,discnt) 3. Βρείτε τα ids των πελατών που έχουν έκπτωση μικρότερη από αυτήν οποιουδήποτε πελάτη που ζει στο Dallas. select cid from customers where discnt < any (select discnt from customers where city = Dallas ); Η έκφραση αυτή είναι λάθος! Ορθή έκφραση: select cid from customers where discnt < all (select discnt from customers where city = Dallas ); 7

Παρατηρήσεις: Το κατηγόρημα expr = any (subselect) έχει την ίδια σημασιολογία με την έκφραση expr in (subselect) Η έκφραση expr not in (subselect) δεν είναι ισοδύναμη με το κατηγόρημα expr any (subselect) Είναι ισοδύναμη με το κατηγόρημα expr all (subselect) Το κατηγόρημα exists Χρησιμοποιείται για να ελεγχθεί αν το αποτέλεσμα ενός subselect είναι κενό. Γενική μορφή: [not] exists (subselect) exists (subselect) είναι αληθής αν το αποτέλεσμα του subselect είναι μη-κενό σύνολο 8

Orders(orderno, month,cid,aid,pid,qty,amt) Agents(aid, aname,city,percent) Customers(cid, cname,city,discnt) Παραδείγματα: 1. Βρείτε τα ονόματα των πελατών που κάνουν παραγγελίες μέσω του πράκτορα a05. select cname from customers, orders where customers.cid=orders.cid and aid= a05 ; ή select cname from customers where exists (select * from orders where customers.cid=orders.cid and aid= a05 ); Στο Σ.Λ. Πλειάδων: {t (1) u (4) (customers(u) (u[2]=t[1]) v (7) (orders(v) (v[3]=u[1]) (v[4]= a05 ) ))} 9

2. Βρείτε τα ids των πελατών που παραγγέλνουν τα προϊόντα p01 και p07. select cid from orders x where x.pid = p01 and exists (select * from orders where cid=x.cid and pid = p07 ); 3. Βρείτε τα ονόματα των πελατών που δεν κάνουν καμία παραγγελία μέσω του πράκτορα a05. select cname from customers where not exists (select * from orders where orders.cid = customers.cid and aid = a05 ); Orders(orderno, month,cid,aid,pid,qty,amt) 10 Agents(aid, aname,city,percent) Customers(cid, cname,city,discnt)

Ποιο είναι το αποτέλεσμα της εντολής select cname from customers, orders where not (orders.cid = customers.cid and aid= a05 ); σε σχέση με την προηγούμενη ερώτηση; επιστρέφει τους πελάτες ο οποίοι δίνουν παραγγελίες με πράκτορες διαφορετικούς από τον a05 αλλά οι οποίοι ενδέχεται να δίνουν παραγγελίες και μέσω του a05. Η ερώτηση μπορεί να εκφραστεί και ως: select cname from customers where cid not in (select cid from orders where aid= a05 ); ή select cname from customers where cid all (select cid from orders where aid = a05 ); 11

4. Το κατηγόρημα not exists χρησιμοποιείται για την έκφραση του τελεστή της διαφοράς : αν R και S είναι συμβατές σχέσεις με σχήμα {A 1,, A n }, η διαφορά R S μπορεί να εκφραστεί ως: select A 1,, A n from R where not exists (select * from S where S.A 1 = R.A 1 and S.A 2 = R.A 2 and and S.A n = R.A n ); 12

Orders(orderno, month,cid,aid,pid,qty,amt) Customers(cid, cname,city,discnt) 5. Βρείτε τα ονόματα των πόλεων στις οποίες μένουν πελάτες που παραγγέλνουν το προϊόν p01. select distinct city from customers where cid in (select cid from orders where pid= p01 ); select distinct city from customers where cid = any (select cid from orders where pid= p01 ); select distinct city from customers c where exists (select * from orders where cid=c.cid and pid= p01 ); 13

Orders(orderno, month,cid,aid,pid,qty,amt) Customers(cid, cname,city,discnt) select distinct city from customers, orders where orders.cid=customers.cid and orders.pid = p01 ; select distinct city from customers where p01 in (select pid from orders where cid = customers. cid); Όλες αυτές οι μορφές είναι ισοδύναμες. Η γλώσσα θα είχε την ίδια εκφραστική δύναμη αν το κατηγόρημα in και τα κατηγορήματα σύγκρισης με ποσοδείκτες παραλείπονταν. Δεν μπορεί όμως να παραληφθεί το κατηγόρημα exists. 14

Τελεστής union συνδυάζει subselects τα οποία παράγουν συμβατές σχέσεις γενική μορφή: subselect {union [all] subselect} περιορισμός: τα subselects δεν μπορούν να περιέχουν τον τελεστή union Παράδειγμα: Βρείτε τις πόλεις στις οποίες διαμένουν είτε πελάτες είτε πράκτορες select city from customers union select city from agents; ή για να επιτρέψουμε επαναλαμβανόμενες πλειάδες select city from customers union all select city from agents; HY360 Lecture 9 15

SQL: Διαίρεση Διαίρεση: η SQL δεν παρέχει τελεστή για διαίρεση Παράδειγμα: Βρείτε τα ids των πελατών που κάνουν παραγγελίες μέσω όλων των πρακτόρων της Νέας Υόρκης. Ή ισοδύναμα: Βρείτε τα ids των πελατών, έτσι ώστε να μην υπάρχει πράκτορας στη Νέα Υόρκη που δεν κάνει παραγγελίες για κάθε έναν από αυτούς τους πελάτες. select cid from customers where not exists (select * from agents where city= New York and not exists (select * from orders where orders.cid=customers.cid and orders.aid=agents.aid)); HY360 Lecture 9 Orders(orderno, month,cid,aid,pid,qty,amt) 16 Agents(aid, aname,city,percent) Customers(cid, cname,city,discnt)

SQL: Διαίρεση Παράδειγμα: Βρείτε τα ids των πρακτόρων στη Νέα Υόρκη ή το Dallas που κάνουν παραγγελίες για όλα τα προϊόντα που κοστίζουν πάνω από 1$. Ή ισοδύναμα: Βρείτε τα ids των πρακτόρων στη Νέα Υόρκη ή το Dallas, έτσι ώστε να μην υπάρχει προϊόν που να κοστίζει πάνω από 1$ και να μην το παραγγέλνουν. select aid from agents where (city= New York or city = Dallas ) and not exists (select pid from products where price > 1.00 and not exists (select * from orders where orders.pid=products.pid and orders.aid=agents.aid)); HY360 Lecture 9 Orders(orderno, month,cid,aid,pid,qty,amt) 17 Agents(aid, aname,city,percent) Customers(cid, cname,city,discnt)

SQL: Διαίρεση Παράδειγμα: Βρείτε τα ids των προϊόντων που παραγέλνονται από όλους τους πελάτες στο Dallas. Ή ισοδύναμα: Βρείτε τα ids των προϊόντων που είναι τέτοια ώστε να μην υπάρχει πελάτης στο Dallas που να μην τα παραγγέλνει. select pid from products where not exists (select cid from customers where city= Dallas and not exists (select * from orders where orders.pid=products.pid and orders.cid=customers.cid)); Η έκφραση της διαίρεσης με αυτό τον τρόπο βασίζεται στην ισοδυναμία: z y p(z,y) z y p(z,y) HY360 Lecture 9 18