Προς το περιεχόμενο

SQL εντολές


mariakal

Προτεινόμενες αναρτήσεις

Δημοσ.

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

ΙΔΙΟΚΤΗΤΗΣ (κωδ,ονομα,δνση)

ΣΠΙΤΙ (αδεια_κατ,τυπος,χρονος_κατ)

ΖΗΜΙΑ (κωδ_ζημιας,τυπος,ημνια)

 

πρέπει να δηλώσω εντολές SQL για τις πιο κάτω περιπτώσεις:

(α) Βρείτε τον αριθμό των ζημιών, στις οποίες τα σπίτια ανήκουν στον Ιωάννη Ιωάννου.

(β) Προσθέστε μία νέα ζημιά στη βδ. Θεώρείστε τις κατάλληλες τιμές για τα απαιτούμενα χαρακτηριστικά.

(γ) Ενημερώστε το ποσό ζημιάς για το σπίτι με άδεια κατασκευής 18345 στη ζημιά με κωδικό 08956 στις 20.000 ευρώ

 

Υπάρχουν και άλλες περιπτώσεις, αλλά αυτες οι τρεις είναι οι πιο συνθετες και με εχουν δυσκολεψει.

Θα εκτιμούσα πολύ , οποιαδήποτε βοηθεια.

Δημοσ.

λείπει ο πίνακας που συνδέει ένα σπίτι με τις ζημιές

και ο πίνακας σύνδεσης σπιτιών-ιδιοκτητών ή κάποια πεδία από τους πίνακες.

ποσό ζημίας ποιο πεδίο ποιου πίνακα?

διορθωσε τα για αρχή

Δημοσ.

το Εχει και το Δηλωσε αφορούν κάποιες σχέσεις που πρέπει να εκφραστούν με κάποιους

πίνακες

 

π.χ.

ΙΔΙΟΚΤΗΤΕΣ_ΣΠΙΤΙΩΝ(id#,κωδ_ιδιοκτητη,αδεια_κατ)

ΖΗΜΙΕΣ(ιδ#,αδεια_κατ,ημερομηνια,ποσο_ζημιας,περιγραφη_ζημιας)

 

φτιάξε σωστά τους πίνακες και όλους όσους χρειάζονται και μετά ρωτα

τα sql που θες.

Δημοσ.

οι πίνακες είναι:

 

ΙΔΙΟΚΤΗΤΗΣ (κωδ,ονομα,δνση)

ΣΠΙΤΙ (αδεια_κατ,τυπος,χρονος_κατ)

ΖΗΜΙΑ (κωδ_ζημιας,τυπος,ημνια)

ΔΗΛΩΣΗ (αδεια_κατ, κωδ_ζημιας, ποσο)

 

Σε ότι αφορά τη συσχέτιση ΕΧΕΙ, δε χρειάζεται (νομίζω) να εκφραστεί με πίνακα.

 

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

(α) Βρείτε τον αριθμό των ζημιών, στις οποίες τα σπίτια ανήκουν στον Ιωάννη Ιωάννου.

(β) Προσθέστε μία νέα ζημιά στη βδ. Θεώρείστε τις κατάλληλες τιμές για τα απαιτούμενα χαρακτηριστικά.

(γ) Ενημερώστε το ποσό ζημιάς για το σπίτι με άδεια κατασκευής 18345 στη ζημιά με κωδικό 08956 στις 20.000 ευρώ

Δημοσ.

κάνεις λάθος

 

δεν αποθηκεύεις στην βάση σου το σημαντικό στοιχείο της ιδιοκτησίας

δηλαδή σε ποιον ιδιοκτήτη ανήκει το κάθε σπίτι.

Δημοσ.

Έχεις δικιο virxen75, το γεγονός κ μόνο ότι η σχεση ΙΔΙΟΚΤΗΤΗΣ εχει ΣΠΙΤΙ ειναι πολλα προς πολλά, δηλώνει από μονο του την υπαρξη και του πίνακα

ΕΧΕΙ (κωδ, άδεια_κατ).

Επομένως συμπληρώνω στου υπόλοιπους πίνακες κ τον προηγούμενο.

Τώρα με τις εντολές SQL, τί θα γίνει?

Δημοσ.

ΙΔΙΟΚΤΗΤΗΣ (κωδ,ονομα,δνση)

ΣΠΙΤΙ (αδεια_κατ,τυπος,χρονος_κατ)

ΖΗΜΙΑ (κωδ_ζημιας,τυπος,ημνια)

ΔΗΛΩΣΗ (αδεια_κατ, κωδ_ζημιας, ποσο)

ΕΧΕΙ (κωδικος,κωδ, άδεια_κατ)

 

(α) Βρείτε τον αριθμό των ζημιών, στις οποίες τα σπίτια ανήκουν στον Ιωάννη Ιωάννου.

select count(κωδ_ζημιας) from ΖΗΜΙΑ where .......

 

(β) Προσθέστε μία νέα ζημιά στη βδ. Θεώρείστε τις κατάλληλες τιμές για τα απαιτούμενα χαρακτηριστικά.

insert into ZHMIA values(.....

 

(γ) Ενημερώστε το ποσό ζημιάς για το σπίτι με άδεια κατασκευής 18345 στη ζημιά με κωδικό 08956 στις 20.000 ευρώ

update ΔΗΛΩΣΗ set ποσο=20000 where αδεια_κατ='18345' and κωδ_ζημιας='08956'

 

το γ) ήταν απλό γι αυτό το έκανα.

Προσπάθησε τα α) β) και τα λέμε.

Δημοσ.

Για τα δυο ερωτήματα, έχω σχεδιάσει τις ακόλουθες εντολές SQL. Υπάρχει κάπου λάθος?

 

ΙΔΙΟΚΤΗΤΗΣ (κωδ,ονομα,δνση)

ΣΠΙΤΙ (αδεια_κατ,τυπος,χρονος_κατ)

ΖΗΜΙΑ (κωδ_ζημιας,τυπος,ημνια)

ΔΗΛΩΣΗ (αδεια_κατ, κωδ_ζημιας, ποσο)

ΕΧΕΙ (κωδικος,κωδ, άδεια_κατ)

 

(α) Βρείτε τον αριθμό των ζημιών, στις οποίες τα σπίτια ανήκουν στον Ιωάννη Ιωάννου.

SELECT COUNT (κωδ_ζημιας)

FROM ΖΗΜΙΑ

WHERE κωδ_ζημιας in (SELECT κωδ_ζημιας, κωδ, ονομα

FROM ΔΗΛΩΣΗ , EXEI, IΔΙΟΚΤΗΤΗΣ

WHERE ονομα="Ιωάννης Ιωάννου")

 

 

 

(β) Προσθέστε μία νέα ζημιά στη βδ. Θεώρείστε τις κατάλληλες τιμές για τα απαιτούμενα χαρακτηριστικά.

insert into ZHMIA values("Α 123", "ΠΥΡΚΑΓΙΑ", "10/11/2009")

Δημοσ.

η σωστή μορφή πινάκων για μένα είναι αυτή

 

 

ερώτημα γ(εξαρτάται από τον τύπο δεδομένων)

==============================================

update ΔΗΛΩΣΗ set ποσο=20000 where αδεια_κατ=18345 and κωδ_ζημιας="08956"; (αν αδεια_κατ ακέραιος)

 

ερώτημα β

================

insert into ZHMIA values("Α 123", "ΠΥΡΚΑΓΙΑ", "10/11/2009");

 

ερώτημα α

=====================

SELECT COUNT (κωδ_ζημιας)

FROM ΔΗΛΩΣΗ

WHERE αδεια_κατ in (select αδεια_κατ from ΣΠΙΤΙ INNER JOIN ΙΔΙΟΚΤΗΤΗΣ ON ΣΠΙΤΙ.κωδ=ΙΔΙΟΚΤΗΤΗΣ.κωδ where ΙΔΙΟΚΤΗΤΗΣ.ονομα="Ιωάννη Ιωάννου");

post-134651-129063050798_thumb.jpg

post-134651-129063051482_thumb.jpg

Δημοσ.

Μελετώντας τη λυση που μου πρότεινες φίλε virxen75, είχα δυο απορίες.

1) Καταρχίν, διεπίστωσα ότι στους πίνακες που έχεις (στη μικρογραφία), δεν υπάρχει ο:

ΕΧΕΙ (κωδικος,κωδ, άδεια_κατ)

Γιατί?

 

2) Αν για παράδειγμα θέλω να κάνω μια διαγραφή. Πχ να διαγράψω το διαμέρισμα που ανήκει στο Γιώργο, πώς πρέπει να κινηθώ?

Να φτιάξω εμφωλευμένη SELECT? Δηλαδή έτσι:

 

DELETE FROM ΣΠΙΤΙ

WHERE κωδ IN

(SELECT κωδ

FROM ΙΔΙΟΚΤΗΤΗΣ

WHERE όνομα = "Γιώργος")

Αρχειοθετημένο

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

  • Δημιουργία νέου...