xriazome voh8eia stin synta3h twn entolwn select..

Γενικές συζητήσεις για SQL και SQL Servers (RDBMS)

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
mike778
Δημοσιεύσεις: 2
Εγγραφή: 04 Ιουν 2006 20:09

xriazome voh8eia stin synta3h twn entolwn select..

Δημοσίευση από mike778 » 04 Ιουν 2006 20:14

Μία εταιρία, η οποία έχει σαν μέλη εκδότες βιβλίων, και η οποία εκπροσωπεί συγγραφείς, αποφάσισε να μηχανογραφηθεί. Για τον λόγο αυτό ζήτησε να γίνει μία βάση δεδομένων στην οποία θα κρατιούνται δεδομένα τόσο για τους συνεργάτες της (εκδότες) και τις εταιρίες τους όσο και για τους συγγραφείς τα βιβλία τους και τις πωλήσεις τους.
Για όλα τα παραπάνω θέλει οπωσδήποτε να ισχύουν τα εξής :

• Κάθε συνεργαζόμενος εκδότης απασχολεί γενικά περισσότερους από έναν υπαλλήλους.
• Κάθε εκδότης δεν μπορεί να έχει πάνω από μία εταιρίες.
• Κάθε εργασία μπορεί να εκτελείτε από πάνω από έναν υπαλλήλους.

• Κάθε συγγραφέας μπορεί να γράψει περισσότερους από έναν τίτλους βιβλίων.
• Ένας τίτλος βιβλίου μπορεί να γραφτεί με συνεργασία πολλών συγγραφέων.
• Για κάθε τίτλο ανάλογα των πωλήσεων θα υπάρχουν διαφορετικά ποσοστά πνευματικών δικαιωμάτων για τον συγγραφέα.

• Κάθε τίτλος μπορεί να πουληθεί πολλές φορές.
• Οι πωλήσεις αυτές μπορεί να πραγματοποιηθούν από πολλά βιβλιοπωλεία.
• Για κάθε πώληση αναλόγως ποσότητας και βιβλιοπωλείου μπορεί να έχουμε πολλές εκπτώσεις.


Με βάση τα παραπάνω ο προγραμματιστής που ανέλαβε την βάση κατέληξε στους παρακάτω πίνακες:

Πίνακας τίτλων
Title(title_id, title, type, pub_id, price, advance, royalty ytd_sales, notes, pubdate)

Πίνακας εκδοτών
publishers(pub_id, pub_name, city, state, country)

Πίνακας στοιχείων εταιρίας εκδότη
pub_info(pub_id, logo, pr_info)

Πίνακας υπαλλήλων
employee(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)

Πίνακας εργασιών υπαλλήλων
jobs(job_id, job_desc, min_lvl, max_lvl)

Πίνακας συγγραφέων
authors(au_id, au_lname, au_fname, phone, address, city, state, zip, contract)

Πίνακας τίτλων ανά συγγραφέα
titleauthor(au_id, title_id, au_ord, royaltyper)

Πίνακας ποσοστών δικαιωμάτων επί των πωλήσεων
roysched(title_id, lorange, hirange, royalty)

Πίνακας πωλήσεων
sales(stor_id, ord_num, ord_date, qty, payterms, title_id)

Πίνακας βιβλιοπωλείων
stores(stor_id, stor_name, stor_address, city, state, zip)

Πίνακας εκπτώσεων ανά ποσότητα πώλησης ανά βιβλιοπωλείο
discounts(discounttype, stor_id, lowqty, highqty, discount)

Όπου με υπογράμμιση τα πρωτεύοντα κλειδιά και με πλάγιους χαρακτήρες τα ξένα κλειδιά.

Πεδίο Περιγραφή Τύπος Not Null
address Διεύθυνση συγγραφέα √
advance Αξία έκδοσης √
au_fname Όνομα συγγραφέα √
au_id Κωδικός συγγραφέα √
au_lname Επίθετο συγγραφέα √
au_ord Αριθμός συγγραφέων ανά τίτλο √
city Πόλη έδρας (βιβλ/λείου,εκδοτη, συγ/φεα) √
contract Ενεργός ή μη συγγραφέας (1 ή 0) √
country Χώρα εκδότη √
discount Ποσοστό έκπτωσης √
discounttype Τύπος έκπτωσης (π.χ. έκπτωση πελάτη) √
emp_id Κωδικός υπαλλήλου √
fname Όνομα υπαλλήλου √
highqty Ανώτερη ποσότητα πώλησης √
hirange Ανώτερος αριθμός βιβλίων υπό έκδοση για πνευμ.δικ. √
hire_date Ημερομηνία πρόσληψης
job_desc Περιγραφή εργασίας √
job_id Κωδικός εργασίας √
job_lvl Αποδοχές υπαλλήλου
lname Επώνυμο υπαλλήλου √
logo Λογότυπο εταιρίας
lorange Κατώτερος αριθμός βιβλίων υπό έκδοση για πνευμ.δικ. √
lowqty Κατώτερη ποσότητα πώλησης √
max_lvl Ανώτερος μισθός εργασίας √
min_lvl Κατώτερος μισθός εργασίας √
minit Αρχικό πατρονύμου
notes Σημειώσεις
ord_date Ημερομηνία πώλησης √
ord_num Αριθμός (κωδικός) πώλησης √
payterms Τρόπος πώλησης (π.χ. μέσω internet) √
phone Τηλέφωνο
pr_info Πληροφορίες εκδότη
price Τιμή ανά τίτλο βιβλίου √
pub_id Κωδικός εκδότη √
pub_name Επωνυμία εκδότη √
pubdate Ημερομηνία έκδοσης √
qty Ποσότητα √
royalty Ποσοστό πνευματικού δικαιώματος √
royaltyper Ποσοστό πνευματικού δικαιώματος επί του τίτλου (βιβλίου) √
state Επαρχία
stor_address Διεύθυνση βιβλιοπωλείου √
stor_id Κωδικός βιβλιοπωλείου √
stor_name Όνομα βιβλιοπωλείου √
title Τίτλος βιβλίου √
title_id Κωδικός τίτλου (βιβλίου) √
type Τύπος βιβλίου (π.χ. Αστυνομικό…) √
ytd_sales Πωλήσεις έτους √
zip Ταχυδρομικός κώδικας √

Οι τύποι των πεδίων να επιλεγούν από εσάς και να αιτιολογηθεί με συντομία η επιλογή σας.

• Να γίνουν οι πίνακες
• Να διαγραφούν οι πίνακες
• Να δοθούν όλοι οι τίτλοι ανά συγγραφέα
• Να δοθούν οι τίτλοι οι οποίοι υπερκάλυψαν σε πωλήσεις το κόστος έκδοσης
• Να δοθούν οι πωλήσεις τίτλων με βάση την ποσότητα πώλησής τους
• Να δοθούν οι συγγραφείς με τους περισσότερους τίτλους κατά σύνολο τίτλων
• Να δοθούν οι τίτλοι που γράφτηκαν από πολλούς συγγραφείς κατά αριθμό συμμετοχής συγγραφέων στον τίτλο
• Να δοθούν οι συγγραφείς που συνεργάστηκαν με άλλους ανά τίτλο και το ποσοστό πνευματικού δικαιώματος που είχαν ανά τίτλο
• Να δοθεί το σύνολο των πωλήσεων (ποσότητα) βιβλίων που είχε κάθε εκδότης
• Να δοθεί ο συνολικός αριθμός υπαλλήλων καθώς και ο συνολικός μισθός υπαλλήλων κάθε εκδότη
• Να δοθούν τα βιβλιοπωλεία που έχουν συνεργαστεί με τους περισσότερους συγγραφείς
• Να δοθούν τα βιβλιοπωλεία που έχουν πουλήσει βιβλία από τους περισσότερους εκδότες

Στην κατασκευή πινάκων και στην διαγραφή τους θα παρθεί υπόψη η σειρά με την οποία θα πρέπει να γίνουν οι εργασίες.

Η ημέρα παράδοσης της εργασίας θα είναι η τελευταία ημέρα πραγματοποίησης του εργαστηρίου.
(Θα βγει ανακοίνωση)
Οι λύσεις θα πρέπει να μπουν στον κατάλογο \\ii\lessons\BaseisI\exam μέχρι την παραπάνω προθεσμία


















xriazome voh8eia stin synta3h twn entolwn select.. opoios mporei as kanei ena quote pls
ty
aafa

mike778
Δημοσιεύσεις: 2
Εγγραφή: 04 Ιουν 2006 20:09

xriazome voh8eia stin synta3h twn entolwn select..

Δημοσίευση από mike778 » 04 Ιουν 2006 20:19

1)

CREATE TABLE publisher ( pub_id number(5) primary key not null , pub_name char(20) ,
city varchar(20) , state varchar(10) , country varchar(10));


CREATE TABLE pub_info ( pub_id number(5) primary key not null , logo varchar(20) , pr_info varchar(30));


CREATE TABLE jobs ( job_id number(5) , job_desc varchar(30) , min_lvl number(10), max_lvl number(10));


CREATE TABLE authors ( au_id number(5) primary key not null, au_lname varchar(20), au_fname varchar(20),
phone number(10), address varchar(10), city varchar(10), state varchar(10),
zip varchar(5), contract number(2));


CREATE TABLE stores ( stor_id number(5) primary key not null, stor_name varchar(20), stor_address varchar(10),
city varchar(20), state varchar(10), zip varchar(5));


CREATE TABLE title ( title_id number(5) primary key not null, title varchar(20), type varchar(20), pub_id number(5) ,
price number(10), advance number(10), royalty number(5), ytd_sales number(10) ,
notes varchar(50), pubdate number(10), foreign key (pub_id) references publisher(pub_id) not null);



CREATE TABLE roysched ( title_id number(5) primary key not null, lorange number(50), hirange number(100),
royalty number(2));



CREATE TABLE discounts ( discounttype number(5), stor_id number(5), lowqty number(5), highqty number(10),
discount number(5) foreign key (stor_id) references stores(stor_id) not null);




CREATE TABLE sales ( stor_id number(5), ord_num number(5) primary key not null, ord_date number(6),
qty number(10), payterms char(10), title_id number(5), foreign key (stor_id)
references stores(stor_id), foreign key (title_id) references title(title_id));



CREATE TABLE titleauthor ( au_id number(5), title_id number(5), au_ord number(5), royaltyper number(5) ,
constraint PK_titleauthor primary key (au_id , title_id) not null);




CREATE TABLE employee ( emp_id number(5) primary key not null, fname varchar(10), minit char(2),
lname varchar(10), job_id number(5), job_lvl number(10), pub_id number(5),
hire_date number(6) , foreign key (pub_id) references publisher(pub_id) not null);


-------------------------------------------------------------------------------------------------------------------------------

2)

DROP TABLE employee;
DROP TABLE titleauthor;
DROP TABLE sales;
DROP TABLE discounts;
DROP TABLE roysched;
DROP TABLE title;
DROP TABLE stores;
DROP TABLE authors;
DROP TABLE jobs;
DROP TABLE pub_info;
DROP TABLE publisher;

-------------------------------------------------------------------------------------------------------------------------------

3)

Select au_id, title_id
from titleauthor
group by au_id ;


-----------------------------------------------------------------------------------------------------------------------------------

4)

select title
from title
where ytd_sales > advance;


-------------------------------------------------------------------------------------------------------------------------------

5)

select ord_num , title_id
from sales
order by qty;

------------------------------------------------------------------------------------------------------------------------------

6)

select


-------------------------------------------------------------------------------------------------------------------------------

7)

select

--------------------------------------------------------------------------------------------------------------------------------

8)

select

------------------------------------------------------------------------------------------------------------------------------

9)

select

------------------------------------------------------------------------------------------------------------------------------

10)

select

-------------------------------------------------------------------------------------------------------------------------------

11)

select

------------------------------------------------------------------------------------------------------------------------------

12)

select

-------------------------------------------------------------------------------------------------------------------------------
aafa

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27622
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

xriazome voh8eia stin synta3h twn entolwn select..

Δημοσίευση από cordis » 05 Ιουν 2006 11:09

το 5 είναι έτσι..

Κώδικας: Επιλογή όλων

select title.title_id, title.title, sum(sales.qty)
from sales, title
where sales.title_id = title.title_id
group by title.title_id, title.title; 
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “Βάσεις Δεδομένων και SQL - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες