我有2个sql表 表名:代理商包含具有coloumn AgentID的记录
表名为:空缺是正在显示数据ans的表。 名为空缺的表有空缺。包含与此类似的值的代理
VacanyID Company position CTC Candidates Agents
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FBVAC001 | HDFC | Branch Manager | 4.5 | FBCAN001,FBCAN002| Agent3,Agent4
FBVAC003 | TBNH | Branch Manager | 4.5 | FBCAN004,FBCAN005| Agent2,Agent4
FBVAC005 | MMNT | Branch Manager | 4.5 | FBCAN008,FBCAN006| Agent3
FBVAC008 | LCFC | Branch Manager | 4.5 | FBCAN009,FBCAN023| Agent3,Agent4
FBVAC008 | KOTC | Branch Manager | 4.5 | FBCAN009,FBCAN023| Agent5,Agent4
我想运行一个查询,该查询只返回那些包含与表名代理中的agents.AgentID相对应的值的记录。这是迄今为止的查询,但所有它都是那些在空缺中没有多个值的记录.Agents
例如,如果要搜索的值是Agent3,则它应返回rows1,3和4,而只返回第3行。
SELECT
vacancies.VacancyID,
vacancies.Company,
vacancies.`Position`,
vacancies.CTC,
vacancies.Candidates,
vacancies.Agents
FROM vacancies
, agents
WHERE (FIND_IN_SET(vacancies.Agents,agents.AgentID) <> 0)
如何解决这个问题?
答案 0 :(得分:3)
我相信你的参数会在FIND_IN_SET
中向后反转。该集应该是第二个
FIND_IN_SET(agents.AgentID, vacancies.Agents)
更多信息:http://www.bitbybit.dk/carsten/blog/?p=162
此外,如果您只想查看特定代理,您还需要对其进行过滤,否则您将获得代理和匹配空位的所有可能组合(因此重复行):
AND Agents.AgentID = 'Agent3'
答案 1 :(得分:0)
SELECT
vacancies.VacancyID,
vacancies.Company,
vacancies.`Position`,
vacancies.CTC,
vacancies.Candidates,
vacancies.Agents
FROM vacancies,
agents
WHERE (select
agents.agentid,
vacancies.agentid
from agents
left join vacancies
on vacancies.agentid = agents.agentid)
and agents.agentid = 'Agent3'