Lấy ví dụ một ứng dụng có người dùng, mỗi ứng dụng có thể nằm trong một nhóm chính xác. Nếu chúng ta muốn chọn danh sách các nhóm không có thành viên, thì SQL chính xác là gì? Tôi cứ cảm thấy như sắp nắm lấy truy vấn, và rồi nó lại biến mất.Chọn tất cả các mục trong bảng không xuất hiện trong khóa ngoài của một bảng khác
Điểm thưởng - được đưa ra senario thay thế, trong đó có nhiều cặp ghép nối, SQL là gì để xác định các nhóm không sử dụng?
(nếu bạn muốn tên trường cụ thể :) One-To-Nhiều:
Table 'users': | user_id | group_id |
Table 'groups': | group_id |
Nhiều-To-Nhiều:
Table 'users': | user_id |
Table 'groups': | group_id |
Table 'user-group': | user_id | group_id |
Cảm ơn cả hai câu trả lời, cả hai đều hoạt động. Tôi tò mò nếu có bất kỳ sự khác biệt chức năng giữa hai phương pháp. – dimo414
@ dimo414 - ít nhất là trong Sql Server (2005), kế hoạch thực hiện cho phiên bản của tôi ngắn hơn và có chi phí * thấp hơn * thấp hơn. Thực sự, nó sẽ được xuống mà một trong những bạn xem xét dễ đọc hơn, trừ khi bạn đang sử dụng bộ dữ liệu lớn! =) – Rob
Tuy nhiên - chỉ cần chạy cả hai truy vấn trong cùng một lô với 65.536 hàng trong users_groups, truy vấn của tôi chiếm 1% chi phí lô và t'other là 99% của lô - cả hai vẫn được thực hiện trong ít hơn một thứ hai trong tổng số mặc dù – Rob