SELECT u.*,h.*,d.* ,
(SELECT count(id) FROM OHS
WHERE Category = 'POLICIES'
AND ID NOT IN
(
SELECT OHSID
FROM User_OHS
WHERE UserID=u.ID AND Type='POLICIES'
)) as countr
FROM User u
LEFT JOIN HealthDec h ON u.ID = h.EmpId
LEFT JOIN Document d On u.ID = d.UserID;
你可以像这样组合它们,只要你的 subse3lect 只有 onbe 行和 1 个 coumn
User_OHS 是“多对多映射”或“桥接”表。这是数据库中的常见模式。
但它的索引通常很差。建议:http: //mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
TEXT
除非列确实可能超过几百个字符,否则不要使用 Datatype 。什么HomePhone
需要超过 20 个字符?同上uo.Type
。此建议有助于在某些查询中创建有用的索引和性能。如果您要
Birthdate
与任何事物进行“比较”,请将其设为DATE
,而不是VARCHAR
. (并确保在插入值时对其进行清理。)