Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Eine Tabelle kann nicht nur zweimal in derselben Abfrage verwendet, sondern sogar mit sich selbst verbunden werden. Zunächst mag das seltsam klingen, aber es gibt gute Gründe, dies gelegentlich zu tun. Die employee-Tabelle enthält beispielsweise einen selbstreferenzierenden Fremdschlüssel: eine Spalte (superior_emp_id), die auf den Primärschlüssel derselben Tabelle verweist. Diese Spalte referenziert den jeweiligen Vorgesetzten eines Mitarbeiters (wenn der Mitarbeiter nicht selbst der Chef des Ganzen ist; dann ist die Spalte natürlich null). Mit einem Self-Join können Sie eine Abfrage schreiben, die die Namen der Angestellten zusammen mit ihren jeweiligen Vorgesetzten aufführt:
mysql> SELECT e.fname, e.lname, -> e_mgr.fname mgr_fname, e_mgr.lname mgr_lname -> FROM employee e INNER JOIN employee e_mgr -> ON e.superior_emp_id = e_mgr.emp_id; +----------+-----------+-----------+-----------+ | fname | lname | mgr_fname | mgr_lname | +----------+-----------+-----------+-----------+ | Susan | Barker | Michael | Smith | | Robert | Tyler | Michael | Smith | | Susan | Hawthorne | Robert | Tyler | | John | Gooding | Susan | Hawthorne | | Helen | Fleming | Susan | Hawthorne | | Chris | Tucker | Helen | Fleming | | Sarah | Parker | Helen | Fleming | | Jane | Grossman | Helen | Fleming | | Paula | Roberts | Susan | Hawthorne | | Thomas | Ziegler | Paula | Roberts | | Samantha | Jameson | Paula | Roberts | | John | Blake | Susan | Hawthorne | | Cindy | ....