pairs of instructors’ names for instructors who share the same office. This can
be done by writing:
select I.name as firstname, INSTRUCTORS.name as secname
from INSTRUCTORS I, INSTRUCTORS
where I.roomno = INSTRUCTORS.roomno and
I.empno < INSTRUCTORS.empno;
The result of this query is:
FIRSTNAME SECNAME
------------------------------
Exxon George Will Samuel
Conceptually, we create an alias I of the table INSTRUCTORS, compute the
product between this alias and INSTRUCTORS and retain those pairs that share
the the same room and consist of distinct individuals.
Example 5.8.3 Suppose that we need to find all triples of student names for
students who live in the same city and state. Now we need to operate with three
distinct copies of the table STUDENTS. This is accomplished by:
select S1.name as name1, S2.name as name2,
S3.name as name3
from STUDENTS S1, STUDENTS S2,
STUDENTS S3
where S1.state = S2.state and
S2.state = S3.state and
5.9 Join in SQL 89
S1.city = S2.city and
S2.city = S3.city and
S1.stno < S2.stno and
S2.stno < S3.stno
which gives the result:
NAME1 NAME2 NAME3
----------------------------------------------------
McLane Sandy Prior Lorraine Rawlings Jerry
5.9 Join in SQL
Earlier version of SQL (at the level of SQL 1) dealt with the join operation
indirectly, using operations like product, selection and projection, which are
already available in SQL. The blueprint of this treatment of the join operation
was outlined in Section 4.2.
Example 5.9.1 The SQL solution to the query considered in Example 4.2.2 in
which we seek to find the names of instructors who have taught any four-credit
course is solved in SQL by writing:
select distinct INSTRUCTORS.name
from COURSES, GRADES, INSTRUCTORS
where COURSES.cr = 4
and COURSES.cno = GRADES.cno
and GRADES.empno = INSTRUCTORS.empno;
The steps that we applied in relational algebra can be easily reconstituted in
SQL. The first step that consists of computing the product
T1 = COURSES × GRADES × INSTRUCTORS
corresponds to the list of tables that follows the word from. Then, the selection
specified by
T2 = (T1where COURSES.cr = 4 and
COURSES.cno = GRADES.cno and
GRADES.empno = INSTRUCTORS.empno)
is executed using the condition of the where clause.
Finally, the projection
T3(name) = T2[INSTRUCTORS.name]
corresponds to the list that follows select. In this case, this list consists of one
attribute, INSTRUCTORS.name.
We give one more example that shows a typical query that uses a join.
90 SQL — The Relational Language
Example 5.9.2 To list all pairs of student names and course names such that
the student takes the course, the relational algebra solution would require that
คู่ของชื่ออาจารย์ผู้สอนที่แสดงสำนักงานเดียวกัน นี้สามารถ
ทำได้โดยการเขียน:
เลือก I.name เป็น FirstName, INSTRUCTORS.name เป็น secname
จากอาจารย์ผมสอน
ที่ I.roomno = INSTRUCTORS.roomno และ
I.empno <INSTRUCTORS.empno;
ผลของแบบสอบถามนี้คือ:
FIRSTNAME SECNAME
------------------------------
เอ็กซอนจอร์จซามูเอล
แนวคิดที่เราสร้างฉันนามแฝงของอาจารย์ตารางคำนวณ
สินค้าระหว่าง นามแฝงนี้และอาจารย์และรักษาคู่ที่ร่วมกัน
ในห้องเดียวและต้องประกอบด้วยบุคคลที่แตกต่างกัน.
5.8.3 ตัวอย่างสมมติว่าเราต้องการที่จะหา triples ทั้งหมดชื่อของนักเรียนสำหรับ
นักเรียนที่อาศัยอยู่ในเมืองเดียวกันและรัฐ ตอนนี้เราต้องทำงานกับสาม
เล่มที่แตกต่างของนักเรียนโต๊ะ นี่คือความสำเร็จโดย:
เลือก S1.name เป็น name1, S2.name เป็น 2,
S3.name เป็น 3
จากนักเรียน S1, S2 นักเรียน,
นักศึกษา S3
ที่ S1.state = S2.state และ
S2.state = S3.state และ
5.9 เข้าร่วมใน SQL 89
S1.city = S2.city และ
S2.city = S3.city และ
S1.stno <S2.stno และ
S2.stno <S3.stno
ซึ่งจะช่วยให้ผล:
NAME1 NAME2 NAME3
------- ---------------------------------------------
McLane แซนดี้ก่อนที่ลอเรนลิงส์ เจอร์รี่
5.9 เข้าร่วมใน SQL
รุ่นก่อนหน้าของ SQL (ในระดับของ SQL 1) การจัดการกับการดำเนินการเข้าร่วม
ทางอ้อมโดยใช้การดำเนินการเช่นเดียวกับผลิตภัณฑ์ตัวเลือกและการฉายภาพที่มี
อยู่แล้วใน SQL พิมพ์เขียวของการรักษาของการดำเนินการเข้าร่วมนี้
ถูกระบุไว้ในมาตรา 4.2.
ตัวอย่าง 5.9.1 การแก้ปัญหา SQL เพื่อพิจารณาในการสอบถามตัวอย่าง 4.2.2 ใน
การที่เราพยายามที่จะหาชื่อของอาจารย์ที่ได้รับการสอนใด ๆ สี่เครดิต
แน่นอน แก้ไขใน SQL โดยการเขียน:
เลือก INSTRUCTORS.name ที่แตกต่าง
จากหลักสูตรการเรียน, อาจารย์
ที่ COURSES.cr = 4
และ COURSES.cno = GRADES.cno
และ GRADES.empno = INSTRUCTORS.empno;
ขั้นตอนที่เรานำมาใช้ในเชิงพีชคณิตสามารถ สร้างขึ้นได้อย่างง่ายดายใน
SQL ขั้นตอนแรกที่ประกอบด้วยคอมพิวเตอร์ผลิตภัณฑ์
T1 = หลักสูตรการเรียน××อาจารย์
สอดคล้องกับรายการของตารางที่ตามคำจาก จากนั้นเลือก
ที่ระบุโดย
T2 = (T1where COURSES.cr = 4 และ
COURSES.cno = GRADES.cno และ
GRADES.empno = INSTRUCTORS.empno)
จะดำเนินการโดยใช้เงื่อนไขของข้อที่.
สุดท้ายฉาย
T3 (ชื่อ) T2 = [INSTRUCTORS.name]
สอดคล้องกับรายการที่เลือกดังต่อไปนี้ ในกรณีนี้รายการนี้ประกอบด้วยหนึ่ง
. แอตทริบิวต์ INSTRUCTORS.name
เราให้เป็นตัวอย่างหนึ่งที่แสดงให้เห็นถึงการสอบถามทั่วไปที่ใช้ร่วม.
90 SQL - ภาษาสัมพันธ์
ตัวอย่าง 5.9.2 การแสดงรายชื่อคู่ของชื่อนักเรียนและชื่อแน่นอน เช่นที่
นักเรียนจะใช้เวลาเรียน, การแก้ปัญหาเชิงพีชคณิตจะต้องว่า
การแปล กรุณารอสักครู่..