Μετάβαση στο κύριο περιεχόμενο
Υποστήριξη
Είσοδος με Microsoft
Είσοδος ή δημιουργία λογαριασμού.
Γεια σας,
Επιλέξτε διαφορετικό λογαριασμό.
Έχετε πολλούς λογαριασμούς
Επιλέξτε τον λογαριασμό με τον οποίο θέλετε να εισέλθετε.

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

Μπορείτε να γράψετε ένα δευτερεύον ερώτημα σε ένα παράσταση ή σε μια πρόταση Structured Query Language (SQL) στο προβολή SQL.

Σε αυτό το άρθρο

Χρήση των αποτελεσμάτων ενός ερωτήματος ως πεδίου σε άλλο ερώτημα

Μπορείτε να χρησιμοποιήσετε ένα δευτερεύον ερώτημα ως ψευδώνυμο πεδίου. Χρησιμοποιήστε ένα δευτερεύον ερώτημα ως ψευδώνυμο πεδίου όταν θέλετε να χρησιμοποιήσετε τα αποτελέσματα του δευτερεύοντος ερωτήματος ως πεδίο στο κύριο ερώτημα.

Σημείωση: Ένα δευτερεύον ερώτημα που χρησιμοποιείτε ως ψευδώνυμο πεδίου δεν μπορεί να επιστρέψει περισσότερα από ένα πεδία.

Μπορείτε να χρησιμοποιήσετε ένα ψευδώνυμο πεδίου δευτερεύοντος ερωτήματος για να εμφανίσετε τιμές που εξαρτώνται από άλλες τιμές στην τρέχουσα γραμμή, κάτι που δεν είναι δυνατό χωρίς τη χρήση δευτερεύοντος ερωτήματος.

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

  1. Στην καρτέλα Αρχείο, επιλέξτε Δημιουργία.

  2. Στην περιοχή Διαθέσιμα πρότυπα, κάντε κλικ στην επιλογή Δείγματα προτύπων.

  3. Κάντε κλικ στην επιλογή Northwind και, στη συνέχεια, κάντε κλικ στην επιλογή Δημιουργία.

  4. Ακολουθήστε τις οδηγίες στη σελίδα Northwind Traders (στην καρτέλα αντικειμένου Οθόνη έναρξης) για να ανοίξετε τη βάση δεδομένων και έπειτα κλείστε το παράθυρο διαλόγου σύνδεσης.

  5. Στην καρτέλα Δημιουργία, στην ομάδα Ερωτήματα, κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.

  6. Κάντε κλικ στην καρτέλα Ερωτήματα και, στη συνέχεια, κάντε διπλό κλικ στην επιλογή Παραγγελίες προϊόντων.

  7. Κάντε διπλό κλικ στο πεδίο Αναγνωριστικό προϊόντος και στο πεδίο Ημερομηνία παραγγελίας για να τα προσθέσετε στο πλέγμα σχεδίασης ερωτήματος.

  8. Στη γραμμή Ταξινόμηση της στήλης Αναγνωριστικό προϊόντος του πλέγματος, επιλέξτε Αύξουσα.

  9. Στη γραμμή Ταξινόμηση της στήλης Ημερομηνία παραγγελίας του πλέγματος, επιλέξτε Φθίνουσα.

  10. Στην τρίτη στήλη του πλέγματος, κάντε δεξί κλικ στη γραμμή Πεδίο και, στη συνέχεια, κάντε κλικ στην επιλογή Ζουμ στο μενού συντόμευσης.

  11. Στο παράθυρο διαλόγου Ζουμ , πληκτρολογήστε ή επικολλήστε την ακόλουθη παράσταση:

    Prior Date: (SELECT MAX([Order Date]) 
    FROM [Product Orders] AS [Old Orders]
    WHERE [Old Orders].[Order Date] < [Product Orders].[Order Date]
    AND [Old Orders].[Product ID] = [Product Orders].[Product ID])

    Αυτή η παράσταση είναι το δευτερεύον ερώτημα. Για κάθε γραμμή, το δευτερεύον ερώτημα επιλέγει την πιο πρόσφατη ημερομηνία παραγγελίας που είναι λιγότερο πρόσφατη από την ημερομηνία παραγγελίας που έχει ήδη συσχετιστεί με τη γραμμή. Σημειώστε πώς χρησιμοποιείτε τη λέξη-κλειδί AS για να δημιουργήσετε ένα ψευδώνυμο πίνακα, ώστε να μπορείτε να συγκρίνετε τιμές στο δευτερεύον ερώτημα με τις τιμές στην τρέχουσα γραμμή του κύριου ερωτήματος.

  12. Στην τέταρτη στήλη του πλέγματος, στη γραμμή Πεδίο , πληκτρολογήστε την ακόλουθη παράσταση:

    Interval: [Order Date]-[Prior Date]

    Αυτή η παράσταση υπολογίζει το χρονικό διάστημα μεταξύ κάθε ημερομηνίας παραγγελίας και της ημερομηνίας προηγούμενης παραγγελίας για το συγκεκριμένο προϊόν, χρησιμοποιώντας την τιμή για την προηγούμενη ημερομηνία που ορίσαμε χρησιμοποιώντας ένα δευτερεύον ερώτημα.

  13. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

    1. Το ερώτημα εκτελείται και εμφανίζει μια λίστα με ονόματα προϊόντων, ημερομηνίες παραγγελίας, προηγούμενες ημερομηνίες παραγγελίας και το χρονικό διάστημα μεταξύ των ημερομηνιών παραγγελίας. Τα αποτελέσματα ταξινομούνται πρώτα κατά Αναγνωριστικό προϊόντος (σε αύξουσα σειρά) και, στη συνέχεια, κατά Ημερομηνία παραγγελίας (σε φθίνουσα σειρά).

    2. Σημείωση: Επειδή το αναγνωριστικό προϊόντος είναι ένα πεδίο αναζήτησης, από προεπιλογή, η Access εμφανίζει τις τιμές αναζήτησης (σε αυτή την περίπτωση, το όνομα προϊόντος) και όχι τα πραγματικά αναγνωριστικά προϊόντων. Παρόλο που αυτό αλλάζει τις τιμές που εμφανίζονται, δεν αλλάζει τη σειρά ταξινόμησης.

  14. Κλείστε τη βάση δεδομένων Northwind.

Αρχή της σελίδας

Χρήση δευτερεύοντος ερωτήματος ως κριτήριο για ένα πεδίο ερωτήματος

Μπορείτε να χρησιμοποιήσετε ένα δευτερεύον ερώτημα ως κριτήριο πεδίου. Χρησιμοποιήστε ένα δευτερεύον ερώτημα ως κριτήριο πεδίου όταν θέλετε να χρησιμοποιήσετε τα αποτελέσματα του δευτερεύοντος ερωτήματος για να περιορίσετε τις τιμές που εμφανίζει το πεδίο.

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

  1. Ανοίξτε το στοιχείο Northwind.accdb και ενεργοποιήστε το περιεχόμενό του.

  2. Κλείστε τη φόρμα σύνδεσης.

  3. Στην καρτέλα Δημιουργία, στην ομάδα Άλλο, κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.

  4. Στην καρτέλα Πίνακες , κάντε διπλό κλικ στις επιλογές Παραγγελίες και Υπάλληλοι.

  5. Στον πίνακα "Παραγγελίες", κάντε διπλό κλικ στο πεδίο "Αναγνωριστικό υπαλλήλου ", στο πεδίο "Αναγνωριστικό παραγγελίας " και στο πεδίο "Ημερομηνία παραγγελίας " για να τα προσθέσετε στο πλέγμα σχεδίασης ερωτήματος. Στον πίνακα Υπάλληλοι, κάντε διπλό κλικ στο πεδίο Τίτλος εργασίας για να το προσθέσετε στο πλέγμα σχεδίασης.

  6. Κάντε δεξί κλικ στη γραμμή Κριτήρια της στήλης Αναγνωριστικό υπαλλήλου και, στη συνέχεια, κάντε κλικ στην επιλογή Ζουμ στο μενού συντόμευσης.

  7. Στο πλαίσιο Ζουμ , πληκτρολογήστε ή επικολλήστε την ακόλουθη παράσταση:

    IN (SELECT [ID] FROM [Employees] 
    WHERE [Job Title]<>'Sales Representative')

    Αυτό είναι το δευτερεύον ερώτημα. Επιλέγει όλα τα αναγνωριστικά υπαλλήλων όπου ο υπάλληλος δεν έχει θέση εργασίας του Αντιπροσώπου πωλήσεων και παρέχει τα αποτελέσματα που ορίζονται στο κύριο ερώτημα. Στη συνέχεια, το κύριο ερώτημα ελέγχει εάν τα αναγνωριστικά υπαλλήλων από τον πίνακα "Παραγγελίες" βρίσκονται στο σύνολο αποτελεσμάτων.

  8. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

    Το ερώτημα εκτελείται και τα αποτελέσματα του ερωτήματος εμφανίζουν μια λίστα με τις παραγγελίες που υποβλήθηκαν σε επεξεργασία από υπαλλήλους που δεν είναι αντιπρόσωποι πωλήσεων.

Αρχή της σελίδας

Συνήθεις λέξεις-κλειδιά SQL που μπορείτε να χρησιμοποιήσετε με ένα δευτερεύον ερώτημα

Υπάρχουν πολλές λέξεις-κλειδιά SQL που μπορείτε να χρησιμοποιήσετε με ένα δευτερεύον ερώτημα:

Σημείωση: Αυτή η λίστα δεν είναι πλήρης. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε έγκυρη λέξη-κλειδί SQL σε ένα δευτερεύον ερώτημα, εξαιρουμένων των λέξεων-κλειδιών ορισμού δεδομένων.

  • ΌΛΑ    Χρησιμοποιήστε τη συνάρτηση ALL σε έναν όρο WHERE για να ανακτήσετε γραμμές που ικανοποιούν τη συνθήκη σε σύγκριση με κάθε γραμμή που επιστρέφεται από το δευτερεύον ερώτημα.

    Για παράδειγμα, ας υποθέσουμε ότι αναλύετε δεδομένα σπουδαστών σε ένα κολέγιο. Οι μαθητές πρέπει να διατηρούν μια ελάχιστη GPA, η οποία διαφέρει από μείζονα σε μείζονα. Τα βασικά πεδία σπουδών και οι ελάχιστες GPA αποθηκεύονται σε έναν πίνακα με το όνομα Βασικά πεδία σπουδών και οι σχετικές πληροφορίες μαθητών αποθηκεύονται σε έναν πίνακα που ονομάζεται Student_Records.

    Για να δείτε μια λίστα των κύριων σπουδών (και τις ελάχιστες GPA) για τις οποίες κάθε σπουδαστής με αυτόν τον βασικό αριθμό υπερβαίνει την ελάχιστη GPA, μπορείτε να χρησιμοποιήσετε το ακόλουθο ερώτημα:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] < ALL
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);
  • ΟΠΟΙΑΔΉΠΟΤΕ    Χρησιμοποιήστε τη συνάρτηση ANY σε έναν όρο WHERE για να ανακτήσετε γραμμές που ικανοποιούν τη συνθήκη σε σύγκριση με τουλάχιστον μία από τις γραμμές που επιστρέφονται από το δευτερεύον ερώτημα.

    Για παράδειγμα, ας υποθέσουμε ότι αναλύετε δεδομένα σπουδαστών σε ένα κολέγιο. Οι μαθητές πρέπει να διατηρούν μια ελάχιστη GPA, η οποία διαφέρει από μείζονα σε μείζονα. Τα βασικά πεδία σπουδών και οι ελάχιστες GPA αποθηκεύονται σε έναν πίνακα με το όνομα Βασικά πεδία σπουδών και οι σχετικές πληροφορίες μαθητών αποθηκεύονται σε έναν πίνακα που ονομάζεται Student_Records.

    Για να δείτε μια λίστα των κύριων σπουδών (και τις ελάχιστες GPA) για τις οποίες οποιοσδήποτε σπουδαστής με αυτόν τον βασικό αριθμό δεν πληροί την ελάχιστη GPA, μπορείτε να χρησιμοποιήσετε το ακόλουθο ερώτημα:

    SELECT [Major], [Min_GPA] 
    FROM [Majors]
    WHERE [Min_GPA] > ANY
    (SELECT [GPA] FROM [Student_Records]
    WHERE [Student_Records].[Major]=[Majors].[Major]);

    Σημείωση: Μπορείτε επίσης να χρησιμοποιήσετε τη λέξη-κλειδί SOME για τον ίδιο σκοπό. η λέξη-κλειδί SOME είναι συνώνυμη με ANY.

  • EXISTS    Χρησιμοποιήστε την πρόταση EXISTS σε έναν όρο WHERE για να υποδείξετε ότι ένα δευτερεύον ερώτημα πρέπει να επιστρέφει τουλάχιστον μία γραμμή. Μπορείτε επίσης να προλογίζετε EXISTS με τη συνάρτηση NOT, για να υποδείξετε ότι ένα δευτερεύον ερώτημα δεν πρέπει να επιστρέφει γραμμές.

    Για παράδειγμα, το ακόλουθο ερώτημα επιστρέφει μια λίστα προϊόντων που βρίσκονται σε τουλάχιστον μία υπάρχουσα σειρά:

    SELECT *
    FROM [Products]
    WHERE EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);

    Με τη χρήση της συνάρτησης NOT EXISTS, το ερώτημα επιστρέφει μια λίστα προϊόντων που δεν βρίσκονται σε τουλάχιστον μία υπάρχουσα σειρά:

    SELECT *
    FROM [Products]
    WHERE NOT EXISTS
    (SELECT * FROM [Order Details]
    WHERE [Order Details].[Product ID]=[Products].[ID]);
  • IN    Χρησιμοποιήστε τη συνάρτηση IN σε έναν όρο WHERE για να βεβαιωθείτε ότι μια τιμή στην τρέχουσα γραμμή του κύριου ερωτήματος είναι μέρος του συνόλου που επιστρέφει το δευτερεύον ερώτημα. Μπορείτε επίσης να επιλέξετε in με not, για να βεβαιωθείτε ότι μια τιμή στην τρέχουσα γραμμή του κύριου ερωτήματος δεν είναι μέρος του συνόλου που επιστρέφει το δευτερεύον ερώτημα.

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

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]<>'Sales Representative');

    Χρησιμοποιώντας τη συνάρτηση NOT IN, μπορείτε να συντάξετε το ίδιο ερώτημα με αυτόν τον τρόπο:

    SELECT [Order ID], [Order Date]
    FROM [Orders]
    WHERE [Employee ID] NOT IN
    (SELECT [ID] FROM [Employees]
    WHERE [Job Title]='Sales Representative');

Αρχή της σελίδας

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

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

Σας βοήθησαν αυτές οι πληροφορίες;

Πόσο ικανοποιημένοι είστε με τη γλωσσική ποιότητα;
Τι επηρέασε την εμπειρία σας;
Πατώντας "Υποβολή" τα σχόλια σας θα χρησιμοποιηθούν για τη βελτίωση των προϊόντων και των υπηρεσιών της Microsoft. Ο διαχειριστής IT θα έχει τη δυνατότητα να συλλέξει αυτά τα δεδομένα. Δήλωση προστασίας προσωπικών δεδομένων.

Σας ευχαριστούμε για τα σχόλιά σας!

×