我詳細閱讀你的問題,總結如下:
- 子行之前可能存在,或者日期X之後
- 我想誰的孩子所有的父母都對/之前的日期日期X
請參閱下面的代碼。我們使用HAVING語句,以確保兒童沒有一個日期X.
SELECT P.*
FROM Parent P
WHERE P.id IN
(
SELECT C.parentID
FROM Child C
GROUP BY C.parentID
HAVING MAX(CASE WHEN date > '2010-10-13' THEN 1 ELSE 0 END) = 0
/* do not return children that have a date after 2010-10-13 */
)
示例模式對於那些誰想要一起玩了。 (SQL Server)的
(「日期」被稱爲「指明MyDate」,以避免逃跑的保留字。)
CREATE TABLE Parent (id INT PRIMARY KEY);
CREATE TABLE Child (id INT IDENTITY PRIMARY KEY, parentID INT NOT NULL REFERENCES Parent(id), mydate DATE);
INSERT INTO Parent VALUES (1);
INSERT INTO Parent VALUES (2);
INSERT INTO Parent VALUES (3);
INSERT INTO Parent VALUES (4);
INSERT INTO Child (parentID, mydate) VALUES (1,'2010-10-11')
INSERT INTO Child (parentID, mydate) VALUES (1,'2010-10-12')
INSERT INTO Child (parentID, mydate) VALUES (1,'2010-10-13')
INSERT INTO Child (parentID, mydate) VALUES (2,'2010-10-12')
INSERT INTO Child (parentID, mydate) VALUES (2,'2010-10-13')
INSERT INTO Child (parentID, mydate) VALUES (2,'2010-10-14')
INSERT INTO Child (parentID, mydate) VALUES (3,'2010-10-14')
INSERT INTO Child (parentID, mydate) VALUES (3,'2010-10-15')
INSERT INTO Child (parentID, mydate) VALUES (3,'2010-10-16')
這是不是仍然拉有孩子既是父母在給定日期之前的日期和之後的日期?我只想要父母帶着孩子約會前的時間 – Jimmy 2010-11-06 20:47:59
@Jimmy:查看更新的答案。 – 2010-11-06 20:50:11
你是冠軍,不知道存在的運算符,並在sql中選擇null。非常感謝! – Jimmy 2010-11-06 20:54:36