我在修复此查询时需要一些帮助。这个问题很简单,但我还是无法解决。让我解释它目前的工作背景,然后解释我需要整合的内容。
首先,这是我目前的表格。
候选人表
候选人表列出了所有求职者。
candidates
-----------
id
hash
first_name
last_name
这是候选人表的转储:
id hash first_name last_name
1 092ee63c6698851ba72183388bff1b3b Jonathan Kushner
2 2d234affe1d08c3394cd499f297d7380 Dustin Kushner
文件表
文件表列出了系统中的所有文件
documents
----------
id
hash
title
source_file
这是文档表的转储:
id hash title
1 436etgfgdggdd Associate Sales Resume
2 54645655gggdgdg Senior Officer Cover Letter
3 ffsafsdsfdfdssf Customer Service Resume
职位表
jobs表列出了系统中的所有作业
jobs
----------
id
hash
title
这里是工作表的转储:
id hash title
1 asfsfafafafdf Associate Sales Position
2 fddfd7sd7sd7sd7 Senior Officer Position
3 f9df89df8sd89sd Customer Service Position
candidates_jobs表
candidates_jobs表将候选人连接到工作
candidates_jobs
----------
id
hash
candidate_id
job_id
这里是candidate_jobs表的转储:
id hash job_id candidate_id
1 89efaed413163be4557133266ce295b4 1 1
2 afsdfdssdfsdfsdfsdfsdfsdfsdfsdfd 1 2
3 df08dfs08sd80sdf80sdf80sd8sd8sd8 1 3
candidates_jobs_documents
candidates_jobs_documents表根据作业将文档连接到候选人。
candidates_jobs_documents
----------
id hash job_id candidate_id document_id
1 saasdfasdasdasdasdasdasdasdasdas 1 1 1
2 dfasasasasasasasasdddsdasdasdasd 1 2 2
3 sdfsdfsdsdsdfadfsssssssddssdsdfd 1 3 3
行。现在让我告诉你我当前的疑问:
SELECT
`users`.`first_name`,
`users`.`last_name`,
`documents`.`title`
FROM
`documents`
LEFT JOIN `candidates_jobs_documents`
ON `candidates_jobs_documents`.`document_id` = `documents`.`id`
LEFT JOIN `jobs`
ON `jobs`.`id` = `candidates_jobs_documents`.`job_id`
LEFT JOIN `candidates`
ON candidates.id = candidates_jobs_documents.candidate_id
LEFT JOIN `candidates_jobs`
ON `candidates_jobs`.`candidates_id` = `candidates`.`id`
ORDER BY `candidates`.`last_name` ASC
我想我需要在candidate.id和candidate.id上对candidate_jobs_documents表使用INNER JOIN,但是我无法弄清楚如何使用查询来处理它。另外,我不知道如何使用我的WHERE子句。
查询不对。我需要根据工作获取特定候选人的文件。如您所知,这些文件固定在候选人的工作上,使候选人能够上传任何工作的文件,并将该文件作为该特定工作的文件。
任何帮助都将不胜感激。
答案 0 :(得分:0)
SELECT candidates.first_name, candidates.last_name, documents.title
FROM candidates, documents, candidates_jobs_documents
WHERE candidates.id = candidates_jobs_id.candidate_id AND
documents.id = candidates_jobs_documents.document_id
ORDER BY candidates.last_name ASC;
不确定这是否是您需要的,但也许。我对candidate_jobs_documents表有点困惑......也许你真的想在那里候选_jobs.id而不是candidate.id和job_id?
答案 1 :(得分:0)
列出Jonathan Kushner申请副销售职位所创建的所有文件的示例。
SELECT
`users`.`first_name`,
`users`.`last_name`,
`docs`.`title`
FROM
`candidates` as `users`
INNER JOIN (
`candidates_jobs_documents` AS cjd
INNER JOIN `jobs` AS j ON (cjd.`job_id` = j.id)
INNER JOIN `documents` AS `docs` ON (cjd.`document_id` = docs.id)
) ON (`users`.id = cjd.`candidate_id`)
WHERE
j.title = 'Associate Sales Position'
AND users.first_name = 'Jonathan'
AND users.last_name = 'Kushner'
以下是SQL Fiddle的工作代码预览:http://sqlfiddle.com/#!9/9b16c/1