我有一张表格,其中存储了符合特定条件的员工所需的特定培训标准。他们的员工档案有各种各样的信息,但培训“档案”主要由工作提示,部门,省/州,国家和项目所驱动。
我正在尝试确定如何执行以下操作:
样本表:
+---------------------------------------------------------------------------------------------+
| trainingProfile_tb |
+---------------------------------------------------------------------------------------------+
| No | course_name | project_id | provinceState_id | country_id | department_id | jobTitle_id |
+----+-------------+------------+------------------+------------+---------------+-------------+
| 1 | Shooting | null | 1 | 2 | null | null |
| 2 | Running | 1 | null | null | null | null |
| 3 | Shooting | 2 | 3 | null | 1 | null |
+----+-------------+------------+------------------+------------+---------------+-------------+
假设员工的项目为1,省/州为1,国家为2,部门为1,职称为1。
我想返回拍摄和跑步的课程,因为表格中的值与非空值相匹配。
我希望这是有道理的,但如果没有,请告诉我需要澄清的内容,我会尽力而为。提前谢谢!
更新
所以这似乎达到了预期的效果。是否有更有效和/或更优雅的写作方式?
SELECT course_name FROM `requiredtraining_tb` WHERE
CASE WHEN company_id is null THEN TRUE WHEN company_id is not null and company_id=1 THEN TRUE END
AND
CASE WHEN provinceState_id is null THEN TRUE WHEN provinceState_id is not null and provinceState_id=3 THEN TRUE END
AND
CASE WHEN jobTitle_id is null THEN TRUE WHEN jobTitle_id is not null and jobTitle_id=3 THEN TRUE END
答案 0 :(得分:0)
我想你可以从这开始...
Select No entity
, 'course_name' attribute
, course_name value
From training_profile_tb
Union
Select no
, 'project_id'
, project_id...
答案 1 :(得分:0)
选择部分中通常使用关键字的情况。 如果您想获取一些具有多个条件和冲突的数据,您可以在更多已分发的选择之间创建一些临时表,如 union join 。 之后,您有一张表,所有人都需要数据,并制定您的共享条件。 如果你想要查询!?请详细说明。 关心a.ayati