2012-04-12 17 views
4

カンマ区切りの値を持つフィールドに対してすべてのレコードを検索しますデータが表示されています。 表という名前の空孔が、私は、テーブル名のエージェントからagents.AgentIDに対応する値が含まれているレコードだけを返します。クエリを実行したいこのMySQLのクエリは、私は2つのSQLテーブル テーブル名持た

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 

にsimmilar値が含まれvacancies.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) 

どのように解決できますか?

答えて

3

あなたのパラメータは、後でFIND_IN_SETにあると思います。セットは、第二

FIND_IN_SET(agents.AgentID, vacancies.Agents) 

詳細を来る必要があります:http://www.bitbybit.dk/carsten/blog/?p=162


をまた、あなたが唯一の特定のエージェントを見たいと思っているならば、あなたがそうでなければ、あなたが取得しているだけでなく、そのためにフィルタリングする必要がありますエージェントとマッチング空孔の全ての可能な組み合わせ(したがって重複行):

AND Agents.AgentID = 'Agent3' 

デモ:http://www.sqlfiddle.com/#!2/b4dcb/3

+0

私はそれを逆にして試しましたが、すべての行と各行の重複が表示されます。 –

+0

'Agent3'だけが必要な場合は、'とAgentID = 'Agent3''も検索する必要があります。投稿への私の更新を見てください。 – mellamokb

+0

私は実行時の例としてagent3を挙げました。私は実際にテーブルエージェントの列AgentIDに対してそれをチェックしたいと思う。 –

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' 
+0

エージェントIDは空きテーブルには存在しません。その値は空きテーブルのエージェントフィールドにあります。 また、エージェント3を直接検索することはできません。エージェントから動力学的に取らなければなりません.AgentID –

関連する問題