..


Σύνδεσμοι διαφημιζόμενων

Το αντίθετο μιας INNER JOIN ή να αποκτήσουν τα στοιχεία δεν ταιριάζουν

Το άρθρο γράφτηκε από τον Max Bossi

Ποιος ξέρει τι γνώση της SQL είναι η JOIN. Σε οδηγούς μας και άλλα άρθρα μας εξήγησε πώς η JOIN και πώς μπορείτε να δημιουργήσετε σχέσεις μεταξύ διαφορετικών πινάκων σε μια βάση δεδομένων.

Η πιο κοινή απαίτηση αυτή ικανοποιείται από το μέσο JOIN για να βρείτε τα παιχνίδια ανάμεσα σε δύο τραπέζια, οπότε διασώζει το INNER JOIN ρήτρα που εντοπίζει με ακρίβεια και επιστρέφει τα πεδία που ανταποκρίνονται στις αλληλογραφία αναζήτησε μέσα που εμπλέκονται δύο ή περισσότερους πίνακες στο JOIN.

Πολύ λιγότερο διαισθητική για το αντίθετο είναι η ανάγκη να προσδιοριστούν οι τομείς που δεν έχουν έναν αγώνα εντός του JOIN.

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

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

Για να πληρούν την πρώτη προϋπόθεση, βέβαια, είναι αρκετά απλό:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 ΑΠΟ πελάτες







 INNER JOIN Παραγγελίες







 ON = clienti.id ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
και μέχρι στιγμής κανένα πρόβλημα.

Αλλά πώς μπορούμε να κάνουμε για να ανατρέψει το αποτέλεσμα; Λοιπόν ... Κατ 'αρχάς, μην χρησιμοποιείτε τις λειτουργίες INNER JOIN, αλλά μια LEFT JOIN για να βρει έναν αγώνα, αλλά όχι πλήρη μερική, όπου, όμως, τα αποτελέσματα από το αριστερό πίνακα επέστρεψε έτσι κι αλλιώς.
Χωρίς αυτό θα δούμε (χρησιμοποιώντας την φράση WHERE) τα αρχεία που λείπουν (π.χ. δεν περιλαμβάνεται στην έκθεση), τότε χαρακτηρίζεται ως NULL (στο SQL NULL ορίζεται ως ένα είδος «ειδική τιμή» που προσδιορίζει την απουσία της αξίας ..)

Ας δούμε τον κώδικα:

 



 SELECT CUSTOMER.FIRST, CUSTOMER.LAST







 ΑΠΟ πελάτες







 LEFT JOIN Παραγγελίες







 ON = clienti.id ordini.id_cliente







 ΠΟΥ ΕΙΝΑΙ NULL ordini.id_cliente







 ORDER BY ASC CUSTOMER.LAST

 
Το αποτέλεσμα είναι, στην πραγματικότητα, ο κατάλογος των ονομάτων των πελατών μας, οι οποίοι ποτέ δεν έχουν αγοράσει τίποτα.

Στην ίδια κατηγορία ...
E-Learning
MS Access (για προχωρημένους) MS Access (για προχωρημένους)
Μάθετε πώς να δημιουργήσετε και να διαχειριστείτε τις βάσεις δεδομένων γρήγορα και εύκολα. Ξεκινώντας από 29 €.
MySQL (Μάθημα) MySQL (Μάθημα)
Διαχείριση του open-source βάση δεδομένων. Από 39 €.
SQL και βάσης δεδομένων (Μάθημα) SQL και βάσης δεδομένων (Μάθημα)
Δημιουργία και διαχείριση των σχεσιακών βάσεων δεδομένων. Από 39 €.
Σύνδεσμοι διαφημιζόμενων