我已经在技术回合中完成了以下任务。
@searchValue
的SQL参数,创建一个SQL查询,该查询将返回为名称或描述包含搜索词的公司工作的所有人。我研究了https://social.technet.microsoft.com/wiki/contents/articles/19854.tutorial-many-to-many-dimension-example-for-sql-server-analysis-services.aspx并检查过像How to make SQL many-to-many same-type relationship table这样的类似问题,但仍然无法弄明白。
我尝试解决以下问题:
1)我创建了Job表,但想知道它应该包含job_id
作为主键还是应该在合并person_id
和company_id
之后创建主键?
create table Job
(
person_id int,
company_id int,
CONSTRAINT person_cat_pk PRIMARY KEY (person_id, company_id),
CONSTRAINT FK_ person
FOREIGN KEY (person_id) REFERENCES person (person_id),
CONSTRAINT FK_company
FOREIGN KEY (company_id) REFERENCES category (company_id)
);
2)我使用了两个INNER JOIN
,在所有情况下都是正确的吗?我们能以简单的方式解决它吗?它有助于我理解未来的查询。
SELECT a.firstName, a.lastName, a.dateOfBirth
FROM Person a INNER JOIN Job b ON a.id = b.person_id
INNER JOIN Company c ON b.company_id = c.id
WHERE ((c.name LIKE '%' + @searchValue + '%')
OR (c.description LIKE '%' + @searchValue + '%'))