我有一个访问数据库,我必须用它来管理实习生和他们工作的地方。现在,我有两张桌子:一张是人,有个人的细节和他们工作地点的桥梁,另一张桌子上有工作场所的名字和各自的老板。
像这样: id | Ativo | Nível| Lotação| Nome
1 | Verdadeiro |高级| 1ªVaraCível| Marina x
3 | Verdadeiro |梅迪奥| 1ªVaraCível|拉克尔x
等等...
(表2,详细说明了地点和老板)
Cadastro_de_varas_e_juizes
id |瓦拉| Juizresponsável| Vagastotaisnívelsuperior| Vagastotaisnívelmédio
1 | 1ªVaraCível|拳头老板| 2 | 3
2 | 2ªVaraCível|秒老板| 2 | 4
3 | 3ªVaraCível|第三个老板| 2 | 3
等等...
为了澄清,我有两种实习生(níveluperiorenívelédio),以及每个工作场所有两种职位空缺。像这样:在1-VaraCível,我可以有2名实习生,其中“上级”,3名“médio”。
我需要做的是获取每个工作类型在每个工作场所放置了多少实习生的信息,然后有一个查询,告诉我每个地方和类型仍有多少空缺。
我感谢任何帮助。谢谢!
翻译表格
表1
id |有效|实习生的教育水平|工作场所|姓名
表2
id |工作场所|老板|大学生职位空缺|高中生的职位空缺
答案 0 :(得分:0)
这应该给你一个起点: SQL Fiddle
MySQL 5.6架构设置:
CREATE TABLE table1 (
id INT,
Active VARCHAR(50),
Education_level VARCHAR(50),
Workplace VARCHAR(50),
Name VARCHAR(50)
);
CREATE TABLE table2 (
id INT,
Workplace VARCHAR(50),
Boss VARCHAR(50),
Vacancies_college INT,
Vacancies_high_school INT
);
INSERT INTO table1 VALUES
(1, 'Verdadeiro', 'Superior', '1ª Vara Cível', 'Marina x'),
(3, 'Verdadeiro', 'Médio', '1ª Vara Cível', 'Raquel x');
INSERT INTO table2 VALUES
(1, '1ª Vara Cível', 'fist boss', 2, 3),
(2, '2ª Vara Cível', 'sec boss', 2, 4),
(3, '3ª Vara Cível', 'third boss', 2, 3);
查询1 :
SELECT t1.Workplace, t1.Active, t1.Education_level,
(CASE
WHEN t1.Education_level = 'Médio' THEN t2.Vacancies_college
WHEN t1.Education_level = 'Superior' THEN t2.Vacancies_high_school
END) - COUNT(*) AS vacancies
FROM table1 t1 LEFT JOIN table2 t2
ON (t1.Workplace = t2.Workplace)
GROUP BY t1.Workplace, t1.Active, t1.Education_level
<强> Results 强>:
| Workplace | Active | Education_level | vacancies |
|---------------|------------|-----------------|-----------|
| 1ª Vara Cível | Verdadeiro | Médio | 1 |
| 1ª Vara Cível | Verdadeiro | Superior | 2 |