我有 2 张桌子:
- 用户:注册献血者的姓名及其血型。
- 血液:包含血型和血液相容性。eg: Blood id 5 (A-) 可以接受来自 5 (A-) 和 6 (O-) 的献血。
我必须建立一个检索潜在献血者的搜索表格。该表格允许用户搜索特定的血型供体。如果我搜索 5 型 (A-) 血型,查询应返回所有具有 5 (A-) 和 6 (O-) 型血型的用户,结果列表应显示每个用户的姓名和血型.
我尝试了以下方法:
SELECT user.name, blood.name AS blood FROM user JOIN blood ON blood.id_blood = user.id_blood WHERE user.id_blood = 5
这只会带来其他具有搜索的确切血型的用户,而不是所有兼容的血型。
然后,我尝试了另一个查询。这将搜索所有兼容的血型,但结果也会按血型过滤(血型 6 记录也应该显示,因为receive
血 id 5 的列包含5,6
.)
SELECT user.name AS name, blood.name AS blood FROM user JOIN blood ON blood.id_blood = user.id_blood WHERE FIND_IN_SET(5, blood.receive)
...但由于某种原因,它没有显示正确的行。我看到一些 A+、AB+、A- 记录,应该只有 A- 和 O- 记录。
这是jsfiddle中的表结构。