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

SQL query


miko

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

Δημοσ.

Γεια σε ολους,

 

ρε παιδια εχω το εξης προβλημα προσπαθω να κανω μια εργασια για το μαθημα βασεις δεδομενων και μια ερωτηση που πρεπει να φτιαξω ειναι:

 

*** select customers.cid from customers where customers.discnt in (select customers.discnt from customers where customers.ccity='rodos' or customers.ccity='bolos') except select customers.cid from customers where customers.ccity='rodos' or customers.ccity='bolos'; ***

 

το προβλημα ειναι οτι ο καθηγητης μας εχει τονησει οτι δεν θελει να του παμε ερωτησεις με (select * ...) στο where , οπως φαινεται απο την ερωτηση με καποιο τροπο πρεπει να βρω που εχουν ιδιο discnt με customers απο ροδο και βολο αυτο που θελω να ρωτησω ειναι

1)πως αλλιως μπορω να το γραψω;

2)επειδη ξερω οτι αν των ρωτησω γιατι το θελει ετσι θα μου πει "γιατι ετσι το θελω" ξερει κανεις να μου πει για πιο λογο δεν προτημουνται ερωτησεις αυτης της μορφης;

Δημοσ.

Αν κατάλαβα καλά θες να εμφανίσεις αυτούς που είναι από Ρόδο και Βόλο;! Τα γράφεις και εσύ λίγο μπερδεμένα ρε παιδί μου :P

 

Αν είναι αυτό που θες τότε γράφεται πολύ απλά.

 

SELECT cid FROM customers WHERE ccity='rodos' OR ccity='bolos'

 

Στο δεύτερο σκέλος της ερώτησης σου αν κατάλαβα καλά ρωτάς γιατί μέσα σε μια συνθήκη του WHERE δεν βάζεις select *.

 

Μπορείς να το κάνεις ανάλογα με το ερώτημα που θες. πχ. με το EXISTS είτε βάλεις * είτε κάποιο πεδίο είναι το ίδιο (αλλά το * είναι πιο βαρύ νομίζω).

Τώρα με το IN δεν βάζεις * γιατί θα είναι λάθος το ερώτημα μιας και του λες ένα πεδίο να είναι ίσο με τα αποτελέσματα, αλλά αν του επιστρέφεις ολόκληρο πίνακα και όχι μια στήλη τότε χάνει την μπάλα ;)

Δημοσ.

Οχι η ερωτηση ειναι να βρω ολους τους κωδικους των πελατων που εχουν την ιδια εκπτωση(discnt) με καποιο πελατη απο Ρόδο ή Βόλο και αυτο που κανω εγω ειναι να επιλεγω ολους οσους εχουν το ιδιο discnt με πελατες απο ροδο και βολο και να αφερω τους τελαυταιους εγω ετσι οπως διαβαζω την ερωτηση καταλαβενω αυτο http://yfrog.com/5cdatabasesj

Δημοσ.
Οπότε αν κατάλαβα καλά θες αυτό:

 

>SELECT cid FROM customers WHERE discnt ΙΝ ( select discnt FROM customers WHERE ccity='rodos' OR ccity='bolos') AND (ccity<>'rodos' OR ccity<>'volos')

 

 

Αν διαβάσεις το post καλύτερα θα δεις

ότι ο καθηγητής τους ,τους είπε να μην κάνουν χρήση subqueries

δηλαδή μετά το Where να μην εμφανίζεται η λέξη SELECT.

Δημοσ.

Μια αλλη λυση που εχω σκεφτει ειναι αυτη:

1.select * into customers2 from customers

2. select customers.cid from customers where ccity='bolos' or ccity='rodos' intersect select customers1.cid from customers1,customers where customers.discnt=customers1.discnt;

...αλλα μου φαινεται οτι παω Τιπολη δια μεσω Λονδινου εσεις τι λετε?
Δημοσ.

κάτι τέτοιο παίζει πάντως

 

>
select  DISTINCT cid from customers,(SELECT discnt as max1  from customers where (ccity='ΒΟΛΟΣ'  or ccity='ΡΟΔΟΣ')) where discnt in (max1) and (ccity<>"ΒΟΛΟΣ" and ccity<>"ΡΟΔΟΣ");

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

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

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