동시에 여러 행을 확인할 수있는 쿼리를 작성하고 있습니다. 동일한 사용자의 레코드 조합이 필요한 정보를 제공하는 경우 모든 단일 레코드로도 필 요한 정보가 충분하지 않아도 사용자는 통과 한 것으로 간주됩니다.여러 행의 레코드 조합 확인 방법 (MySQL)
예 : 두 개의 테이블이 있습니다.
ID CLIENT_ID LAST_NAMEFIRST_NAME 님 date_of_birth SSN 또 다른 하나는 사용자의 의료 테스트 정보를 보관 "실험실"입니다
주소 : ID external_source_id의 USER_ID 일 WBC 적혈구 헤모글로빈
하나는 사용자의 개인 정보를 보관 "사용자"입니다 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가 null이 아님) OR (헤모글로빈이 널이 아님) 또는 (plateletcount가 널이 아님) –