簡體   English   中英

如何在SQL中聯接兩個或多個表而沒有“公共列”

[英]How to join two or more tables without a 'common column' in sql

這是我的課上作業給我帶來的一些麻煩。

顯示Syndey中任何部門有5名以上員工加入的月份。

PS:我為上限表示歉意。 我的老師指示我創建這樣的表格。

表格位置:

LOCATION_ID    NOT NULL NUMBER(4)    
STREET_ADDRESS          VARCHAR2(40) 
POSTAL_CODE             VARCHAR2(12) 
CITY           NOT NULL VARCHAR2(30) 
STATE_PROVINCE          VARCHAR2(25) 
COUNTRY_ID              CHAR(2)

表作業:

JOB_ID     NOT NULL VARCHAR2(10) 
JOB_TITLE  NOT NULL VARCHAR2(35) 
MIN_SALARY          NUMBER(6)    
MAX_SALARY          NUMBER(6) 

工作歷史:

JOB_ID     NOT NULL VARCHAR2(10) 
JOB_TITLE  NOT NULL VARCHAR2(35) 
MIN_SALARY          NUMBER(6)    
MAX_SALARY          NUMBER(6) 

表員工:

EMPLOYEE_ID    NOT NULL NUMBER(6)    
FIRST_NAME              VARCHAR2(20) 
LAST_NAME      NOT NULL VARCHAR2(25) 
EMAIL          NOT NULL VARCHAR2(25) 
PHONE_NUMBER            VARCHAR2(20) 
HIRE_DATE      NOT NULL DATE         
JOB_ID         NOT NULL VARCHAR2(10) 
SALARY                  NUMBER(8,2)  
COMMISSION_PCT          NUMBER(2,2)  
MANAGER_ID              NUMBER(6)    
DEPARTMENT_ID           NUMBER(4)    

表部門:

DEPARTMENT_ID   NOT NULL NUMBER(4)    
DEPARTMENT_NAME NOT NULL VARCHAR2(30) 
MANAGER_ID               NUMBER(6)    
LOCATION_ID              NUMBER(4)    

首先,請不要對在SQL腳本中使用大寫表示歉意。 您的老師正在教您正確的指導原則。 實際上,建議使用大寫字母(尤其是SQL關鍵字和數據類型)來編寫SQL腳本,以提高可讀性(干凈代碼方式)。 如果您甚至想將列名都保留為大寫,那是您的選擇。

好了,這是您的查詢以獲得所需的輸出。 您尚未提及您當前定位的數據庫。 我已經編寫了針對Microsoft SQL Server數據庫的查詢。

SELECT HiredMonth,COUNT(HiredMonth)
FROM
(
SELECT DATENAME(MONTH,E.HIRE_DATE) AS HiredMonth
FROM Employees E
INNER JOIN Departments D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
INNER JOIN Locations L ON D.LOCATION_ID = L.LOCATION_ID
WHERE CITY = 'Sydney') AS P
Group BY P.HiredMonth

PS:如果您要定位其他數據庫,則可能需要對我的查詢中使用的一些內置函數(如DATENAME)進行相應更改,以使該查詢可在其他數據庫中編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM