miko Δημοσ. 15 Ιανουαρίου 2010 Δημοσ. 15 Ιανουαρίου 2010 Γεια σε ολους, ρε παιδια εχω το εξης προβλημα προσπαθω να κανω μια εργασια για το μαθημα βασεις δεδομενων και μια ερωτηση που πρεπει να φτιαξω ειναι: *** 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)επειδη ξερω οτι αν των ρωτησω γιατι το θελει ετσι θα μου πει "γιατι ετσι το θελω" ξερει κανεις να μου πει για πιο λογο δεν προτημουνται ερωτησεις αυτης της μορφης;
computeras13 Δημοσ. 15 Ιανουαρίου 2010 Δημοσ. 15 Ιανουαρίου 2010 Αν κατάλαβα καλά θες να εμφανίσεις αυτούς που είναι από Ρόδο και Βόλο;! Τα γράφεις και εσύ λίγο μπερδεμένα ρε παιδί μου Αν είναι αυτό που θες τότε γράφεται πολύ απλά. SELECT cid FROM customers WHERE ccity='rodos' OR ccity='bolos' Στο δεύτερο σκέλος της ερώτησης σου αν κατάλαβα καλά ρωτάς γιατί μέσα σε μια συνθήκη του WHERE δεν βάζεις select *. Μπορείς να το κάνεις ανάλογα με το ερώτημα που θες. πχ. με το EXISTS είτε βάλεις * είτε κάποιο πεδίο είναι το ίδιο (αλλά το * είναι πιο βαρύ νομίζω). Τώρα με το IN δεν βάζεις * γιατί θα είναι λάθος το ερώτημα μιας και του λες ένα πεδίο να είναι ίσο με τα αποτελέσματα, αλλά αν του επιστρέφεις ολόκληρο πίνακα και όχι μια στήλη τότε χάνει την μπάλα
miko Δημοσ. 15 Ιανουαρίου 2010 Μέλος Δημοσ. 15 Ιανουαρίου 2010 Οχι η ερωτηση ειναι να βρω ολους τους κωδικους των πελατων που εχουν την ιδια εκπτωση(discnt) με καποιο πελατη απο Ρόδο ή Βόλο και αυτο που κανω εγω ειναι να επιλεγω ολους οσους εχουν το ιδιο discnt με πελατες απο ροδο και βολο και να αφερω τους τελαυταιους εγω ετσι οπως διαβαζω την ερωτηση καταλαβενω αυτο http://yfrog.com/5cdatabasesj
computeras13 Δημοσ. 15 Ιανουαρίου 2010 Δημοσ. 15 Ιανουαρίου 2010 Οπότε αν κατάλαβα καλά θες αυτό: >SELECT cid FROM customers WHERE discnt ΙΝ ( select discnt FROM customers WHERE ccity='rodos' OR ccity='bolos') AND (ccity<>'rodos' OR ccity<>'volos')
virxen75 Δημοσ. 15 Ιανουαρίου 2010 Δημοσ. 15 Ιανουαρίου 2010 Οπότε αν κατάλαβα καλά θες αυτό: >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.
miko Δημοσ. 16 Ιανουαρίου 2010 Μέλος Δημοσ. 16 Ιανουαρίου 2010 Μια αλλη λυση που εχω σκεφτει ειναι αυτη: 1.select * into customers2 from customers2. select customers.cid from customers where ccity='bolos' or ccity='rodos' intersect select customers1.cid from customers1,customers where customers.discnt=customers1.discnt; ...αλλα μου φαινεται οτι παω Τιπολη δια μεσω Λονδινου εσεις τι λετε?
virxen75 Δημοσ. 16 Ιανουαρίου 2010 Δημοσ. 16 Ιανουαρίου 2010 κάτι τέτοιο παίζει πάντως > select DISTINCT cid from customers,(SELECT discnt as max1 from customers where (ccity='ΒΟΛΟΣ' or ccity='ΡΟΔΟΣ')) where discnt in (max1) and (ccity<>"ΒΟΛΟΣ" and ccity<>"ΡΟΔΟΣ");
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.