2011-08-09 31 views
0

我在我的數據庫中的兩個表看起來像這樣不計成績根據在多個表

CREATE TABLE IF NOT EXISTS `lab_closure_states` 
(
state_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
lab_id INT UNSIGNED NOT NULL, 
period_id INT UNSIGNED NOT NULL, 
date DATE NOT NULL, 
state BOOL NOT NULL 
) ENGINE = MYISAM 
DEFAULT CHARACTER SET = utf8 
COLLATE = utf8_bin; 

CREATE TABLE IF NOT EXISTS `lab_appointments` 
(
appointment_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
created DATETIME NOT NULL, 
user_id INT UNSIGNED NOT NULL, 
lab_id INT UNSIGNED NOT NULL, 
period_id INT UNSIGNED NOT NULL, 
date DATE NOT NULL, 
class_size INT UNSIGNED NOT NULL, 
comment TEXT NOT NULL, 
lab_is_closed BOOL NOT NULL 
) ENGINE = MYISAM 
DEFAULT CHARACTER SET = utf8 
COLLATE = utf8_bin; 

是否有可能選擇一個給定的用戶,其中,國家是不假所有約會項目?我有的併發症是,我可能不一定有lab_closure_state條目存在的每個lab_appointment。 感謝

+0

如果沒有lab_closure_state條目,您會跳過條目嗎? – sll

回答

0

不要吝嗇一個嚴格的回答你的問題的文本,而是要回答這個問題標題:

如上圖所示
SELECT * 
FROM lab_appointments root 
LEFT OUTER JOIN lab_closure_states satellite 
    ON satellite.lab_id = root.lab_id 
    AND satellite.state = 0 
WHERE 
    satellite.state_id IS NULL 

辦法給你一個機會,你的查詢鏈接多個衛星表和構建複雜的過濾器通過簡單地將IS NULLIS NOT NULL置於WHERE聲明中。

+0

這很好。謝謝! – nickles