【发布时间】:2017-09-05 01:55:00
【问题描述】:
我给了两张表,我想解决以下任务:
- 编写 SQL DDL 以创建名为 Job 的新表,以多对多关系将人员与公司相关联。
-
提供一个名为
@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-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):
SELECT * FROM Company WHERE (name LIKE '%' + @searchValue + '%') OR (description LIKE '%' + @searchValue + '%')
那么,问题2中Job表的作用是什么?这个查询正确吗?
【问题讨论】:
-
您可能需要添加一个 (..)OR (@searchValue IS NULL) 以允许所有选项。至于 IDENTITY 键,我说继续...空格不是像以前一样受到限制,而这把钥匙将使未来的 CRUDS 更容易。
标签: sql create-table