我正在編寫能夠同時檢查多行的查詢。如果同一用戶記錄的組合提供了我需要的足夠信息,即使每一條記錄都沒有提供我需要的足夠信息,用戶也會被認爲已通過。如何檢查多行記錄的組合(MySQL)
例如: 有兩個表格。
一種是「用戶」,它保留用戶的個人信息:
ID CLIENT_ID LAST_NAMEFIRST_NAME您好DATE_OF_BIRTH SSN解決
另一個是「實驗室」,它使用戶的醫療測試信息: ID external_source_id user_ID的日期白細胞紅細胞血紅蛋白hematocrit mcv mch mchc rdw plateletcount
一位用戶只能在用戶表中有一條記錄,但在實驗室表中可能有多條記錄。我想要做的是檢查屬於同一用戶的用戶的多個實驗室記錄,看看這些記錄的組合是否提供了我需要的必要信息。如果是,則即使任何單個實驗室記錄不能提供足夠的信息,也會通過該用戶。例如,必要的信息包括膽固醇,ldl,甘油三酯,葡萄糖。如果用戶有兩個實驗室記錄,一個記錄提供膽固醇(NOT NULL)和ldl(NOT NULL),另一個提供甘油三酯(NOT NULL),葡萄糖(NOT NULL)。他被認爲通過了。
如何編寫能夠做到這一點的查詢?
我目前擁有的查詢是這樣的:
SELECT users.id AS user_id, users.first_name, users.last_name, clients.name AS client,
users.social_security_number AS ssn, users.hiredate, hra.id AS hra_id, hra.date AS hra_date, hra.maileddate AS hra_maileddate,
screening.id AS screening_id, screening.date AS screening_date, screening.maileddate AS screening_maileddate
FROM users
INNER JOIN clients
ON(
users.client_id = clients.id
)
INNER JOIN hra
ON(
users.id = hra.user_id
)
LEFT JOIN labs
ON(
users.id = labs.user_id
)
WHERE users.client_id = '1879'
AND hra.date BETWEEN '2011-07-01' AND '2011-11-15'
AND hra.maileddate IS NOT NULL
AND labs.date BETWEEN '2011-05-15' AND '2011-11-15'
AND labs.maileddate IS NULL
AND labs.cholesterol IS NOT NULL
AND labs.ldl IS NOT NULL
AND labs.triglycerides IS NOT NULL
AND (labs.glucose IS NOT NULL OR labs.ha1c IS NOT NULL)
GROUP BY users.id
+1,打我吧。 – Johan
感謝您的回覆。但如果我想要(wbc不爲空)或(血紅蛋白不爲空)或(plateletcount不爲空) –