Извините за запутанный вопрос, я попытаюсь уточнить.
У меня есть база данных SQL (которую я не создал), для которой я хотел бы написать запрос.Я очень мало знаю о SQL, поэтому мне трудно даже знать, что искать, чтобы увидеть, был ли уже задан этот вопрос, так что извините, если он задан.Это должно быть простое решение для тех, кто в курсе.
Мне нужен запрос на поиск, который я хотел бы выполнить в существующей системе управления данными.Я хочу вернуть все документы, на которых данный пользователь НЕ подписан, как указано в строках в signoffs_table.Данные хранятся аналогично следующему: (это на самом деле упрощение реальной схемы и скрывает несколько левосторонних соединений и столбцов)
signoffs_table:
| id | user_id | document_id | signers_list |
Наивное решение, которое у меня было, заключалось в следующем:
SELECT document_id from signoffs_table WHERE (user_id <> $BobsID) AND signers_list LIKE "%Bob%";
Это работает, если только Боб подписывает документ.Проблема в том, что если Боб и Мэри подписали документ, то таблица выглядит следующим образом:
signoffs_table:
-----------------------------------------------
| id | user_id | document_id | signers_list |
-----------------------------------------------
| 1 | 10 | 100 | "Bob,Mary,Jim" |
| 2 | 20 | 100 | "Bob,Mary,Jim" |
-----------------------------------------------
(assume Bob's ID = 10 and mary's ID = 20).
, а затем, когда я делаю запрос, я возвращаю document_id 100 (в строке # 2), потому чтострока, которую Боб должен был подписать, но не подписал.
Возможно ли то, что я пытаюсь сделать с данной структурой базы данных?Я могу предоставить более подробную информацию, если это необходимо.Я не уверен, сколько деталей нужно.