Как я могу использовать FIND_IN_SET в таблице JOINED?
У меня есть 2 таблицы:
пользователь: имена зарегистрированных доноров крови с их группой крови.кровь: содержит группы крови и совместимость крови. например: идентификатор крови 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.