我目前陷入了一个相对简单的SQL查询。
Working_schedule表是
Work_ID Work_grade Work_shift Work_Process pay_grade
-----------------------------------------------------------------
1 senior day manual 1
2 mid day auto 5
3 mid day auto 2
4 junior night manual 1
查询:
SELECT COUNT(Work_shift)
FROM Working_schedule
WHERE Work_shift = 'night'
AND Work_grade = 'senior'
(SELECT Work_id
FROM Working_schedule ws
INNER JOIN Area_branch ab
ON ab.Area_Branch_ID = ws.FK_Area_Branch_ID
INNER JOIN regional_branch rb
ON rb.regional_branch_id = ab.FK_regional_branch_id
INNER JOIN Country c
ON.c.country_location = rb.FK_country_location
WHERE c.Company_origin = 'Spain')
我必须计算有多少夜班工人,他们也是西班牙裔公司的老年人。
目前,我可以过滤所有晚年工作人员,但我不确定如何检查他们是否适用于西班牙裔公司。
我还可以为所有西班牙语公司获取过滤器,并(通过一系列内部联接)找出work_ids
日程表中的Working
。
我的问题是我如何连接两个查询(甚至可以)?如果没有,我该如何解决这个问题?我曾尝试使用INTERSECT,UNION和UNION ALL,但没有任何效果。
预计的输出数字是一个数字 - work_shifts
在夜间也是work_grade
年级。
答案 0 :(得分:1)
您的查询中的一个小调整就足够了。
SELECT count(ws.Work_id)
FROM Working_schedule ws
INNERJOIN Area_branch ab
ON ab.Area_Branch_ID = ws.FK_Area_Branch_ID
INNERJOIN regional_branch rb
ON rb.regional_branch_id = ab.FK_regional_branch_id
INNERJOIN Country c
ON.c.country_location = rb.FK_country_location
WHERE c.Company_origin = 'Spain' and ws.work_shift='night' and ws.work_grade='senior'
答案 1 :(得分:1)
import tkinter as tk
import tkinter.ttk as ttk
class GUI(tk.Tk):
def __init__(self):
super().__init__()
Button_v1()
Button_v2()
class Button_v1(ttk.Button):
def __init__(self, default_text="Test"):
super().__init__(text=default_text)
s = ttk.Style()
s.theme_use('clam')
s.configure(self.winfo_class(), foreground='blue')
self.pack()
class Button_v2(ttk.Button):
def __init__(self, default_text="Test2"):
super().__init__(text=default_text)
s2 = ttk.Style()
s2.theme_use('vista')
s2.configure(self.winfo_class(), foreground='red')
self.pack()
GUI().mainloop()
此方法使用内部联接筛选出除company_origin ='Spain'之外的所有数据
答案 2 :(得分:0)
试试这个:
SELECT COUNT(Work_shift)
FROM Working_schedule
WHERE Work_shift = 'night'
AND Work_grade = 'senior'
AND Work_id in
(SELECT Work_id
FROM Working_schedule ws
INNER JOIN Area_branch ab
ON ab.Area_Branch_ID = ws.FK_Area_Branch_ID
INNER JOIN regional_branch rb
ON rb.regional_branch_id = ab.FK_regional_branch_id
INNER JOIN Country c
ON.c.country_location = rb.FK_country_location
WHERE c.Company_origin = 'Spain')
答案 3 :(得分:0)
我认为您正在寻找的运营商是IN:
SELECT COUNT(Work_shift)
FROM Working_schedule
WHERE Work_shift = 'night'
AND Work_grade = 'senior'
AND Work_id in
(SELECT Work_id
FROM Working_schedule ws
INNERJOIN Area_branch ab
ON ab.Area_Branch_ID = ws.FK_Area_Branch_ID
INNERJOIN regional_branch rb
ON rb.regional_branch_id = ab.FK_regional_branch_id
INNERJOIN Country c
ON.c.country_location = rb.FK_country_location
WHERE c.Company_origin = 'Spain')