2008-09-21 22 views
5

Tôi hoàn toàn nhận thức được rằng bộ phận được thiết lập có thể được thực hiện thông qua một loạt các hoạt động khác, vì vậy câu hỏi của tôi là:Có thiết lập phân chia trong SQL không?

Có lệnh nào để phân chia bộ trong SQL không?

+0

Bạn có thể làm rõ những gì bạn có ý nghĩa bởi thiết lập bộ phận? Bạn có nghĩa là những thứ như giao lộ? –

+0

Ngoài ra, bạn đang nói về ANSI SQL, hoặc thực hiện của một nhà cung cấp cụ thể của SQL? –

Trả lời

5

http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf

Từ trang 32:

Relational Division không phải là một nhà điều hành cơ bản. Nó có thể được thể hiện dưới dạng chiếu, sản phẩm Descartes, và thiết lập sự khác biệt.

Vì vậy, không. :)

1

Here is a nice explanation using relational algebra syntax.

Với bảng sailors, boatsreserves (ví dụ từ Ramakrishnan & "Cơ sở dữ liệu hệ thống quản lý" Gehrke của) bạn có thể tính toán thủy thủ người đã đặt tất cả các tàu thuyền với các truy vấn sau đây:

SELECT name FROM sailors 
WHERE Sid NOT IN (
    -- A sailor is disqualified if by attaching a boat, 
    -- we obtain a tuple <sailor, boat> that is not in reserves 
    SELECT s.Sid 
    FROM sailors s, boats b 
    WHERE (s.Sid, b.Bid) NOT IN (
     SELECT Sid, Bid FROM reserves 
    ) 
); 

-- Alternatively: 
SELECT name FROM sailors s 
WHERE NOT EXISTS (
    -- Not reserved boats 
    (SELECT bid FROM boats) 
    EXCEPT 
    (SELECT r.bid FROM reserves r 
    WHERE r.sid = s.sid) 
); 
+0

Tôi đã kiểm tra lớp Intro của Gehrke và tôi có thể xác nhận tất cả các ví dụ là hải lý :) –

Các vấn đề liên quan