क्या कोई जानता है कि पर्यवेक्षक कर्मचारी तालिका में भी हैं, तो एम्पाइड और सभी पर्यवेक्षकों के नाम को कैसे सूचीबद्ध करें?

मेरे पास एक सारणी है जिसमें empid , name , salary , hiredate , position है और पर्यवेक्षक (जिसमें empid शामिल है, नाम नहीं)। मैं सभी पर्यवेक्षकों के साम्राज्य और नाम की सूची कैसे सूचीबद्ध करूं?

आउटपुट को पर्यवेक्षक (और उनके empid की एक सूची) और उनके नाम कॉलम होना पड़ता है। यह कर्मचारी कथन बनाने के लिए उपयोग किया गया create कथन है:

/* Create table Employee */
IF OBJECT_ID('Employee', 'U') IS NOT NULL
  DROP TABLE Employee
GO
CREATE TABLE Employee (
emp_id NCHAR(5), 
name NVARCHAR(20), 
position NVARCHAR(20),
hire_date DATETIME,
salary MONEY, 
bcode NCHAR(3),
supervisor NCHAR(5)
)

मैंने कथन और गिनती का उपयोग करके विभिन्न वक्तव्यों की कोशिश की है लेकिन वे काम नहीं कर रहे हैं।

select emp_id, name from employee where position='manager';

मैंने कोशिश की लेकिन यह काम नहीं करता है। कोई भी स्मार्ट जो जानता है कि यह कैसे करें?

1
एएमपी टेबल के साथ स्वयं से जुड़ें।
जोड़ा लेखक Rahul, स्रोत
मेरे पास एक सारणी है जिसमें एम्पाइड, नाम, वेतन, किराए पर लेना, स्थिति और पर्यवेक्षक (जिसमें एम्पाइड नाम शामिल नहीं है) मैं सभी पर्यवेक्षकों के साम्राज्य और नाम को कैसे सूचीबद्ध करूं? आउटपुट को पर्यवेक्षक (और उनके एमिड की एक सूची) और उनके नामों को कॉल करना होगा
जोड़ा लेखक user3067155, स्रोत

3 उत्तर

आपको टेबल पर वापस शामिल होना होगा:

select a.name, a.position, a.hiredate, a.salary, a.supervisorid, 
isnull(b.name, '') as SupervisorName 
from EmployeeTable a 
left join EmployeeTable b 
on a.SupservisorID=b.ID

The left join will make sure that the employees who do not have supervisors are returned, and isnull(b.name, '') can be used if you would like to have something other than NULL as a value in those cases.

2
जोड़ा
मुझे नहीं लगता कि यह वह कथन है जिसकी मुझे आवश्यकता है। मुझे पर्यवेक्षकों के लिए कर्मचारी आईडी और नाम की एक सूची प्राप्त करने की आवश्यकता है। मेरे पास सभी कर्मचारियों के साथ एक टेबल है लेकिन पर्यवेक्षकों को इसमें भी सूचीबद्ध किया गया है, इसलिए मुझे एक बयान चलाने की जरूरत है, केवल पर्यवेक्षकों के साम्राज्य और उनके नामों को वासना होगी। मेरे पास इस तालिका के लिए निर्माण कथन है * * तालिका बनाएं कर्मचारी */IF OBJECT_ID ('कर्मचारी', 'यू') नल ड्रोप टेबल कर्मचारी नहीं है कर्मचारी कर्मचारी बनाएं (emp_id NCHAR (5), नाम NVARCHAR (20), स्थिति NVARCHAR (20), hire_date DATETIME, वेतन पैसा, बकोड एनसीएचएआर (3)
जोड़ा लेखक user3067155, स्रोत
/ * कर्मचारी नियोजित करें * कर्मचारी में शामिल करें (emp_id, नाम, स्थिति, किराया_डेट, वेतन, बकोड, पर्यवेक्षक) 'ई 1001', 'केनेडी', 'निदेशक', '1 9 84/01/16', 50000, 'बी 01 चुनें ', नल यूनियन ऑल सिलेक्ट' ई 1045 ',' स्मिथ ',' सेल्समैन ',' 1 99 4/05/12 ', 18000,' बी04 ',' ई 36 9 1 'यूनियन सभी सिलेक्ट' ई 1271 ',' स्टीवर्ट ',' क्लर्क ', '1 9 8 9/04/30', 16000, 'बी03', 'ई 3255' यूनियन सभी चयन 'ई 1534', 'बेल', 'प्रबंधक', '1995/11/28', 20000, 'बी 01', 'ई 3876'
जोड़ा लेखक user3067155, स्रोत
SELECT e.empid  ,ISNULL(b.name, 'No supervisor') SupervisorName 
FROM employee e LEFT JOIN  employee b
ON e.supervisorid = b.empid

इनर जॉइन उन लोगों को छोड़ देगा जिनके पास पर्यवेक्षक नहीं हैं, सभी कर्मचारियों को पाने के लिए बाएं शामिल हों का उपयोग करें

0
जोड़ा
लेकिन मुझे केवल एएमपी आईडी और पर्यवेक्षक के लिए नाम है जो सभी कर्मचारियों के साथ कर्मचारी तालिका में है। इसकी एक तालिका जिसमें कर्मचारी, नाम, वेतन, स्थिति और उनके पर्यवेक्षक शामिल हैं, मुझे केवल सूची की आवश्यकता है पर्यवेक्षक की एमएम आईडी और नाम
जोड़ा लेखक user3067155, स्रोत
यह काम नहीं किया,
जोड़ा लेखक user3067155, स्रोत
मेरे पास एक सारणी है जिसमें एम्पाइड, नाम, वेतन, किराए पर लेना, स्थिति और पर्यवेक्षक (जिसमें एम्पाइड नाम शामिल नहीं है) मैं सभी पर्यवेक्षकों के साम्राज्य और नाम को कैसे सूचीबद्ध करूं? आउटपुट को पर्यवेक्षक (और उनके एमिड की एक सूची) और उनके नामों को कॉल करना होगा
जोड़ा लेखक user3067155, स्रोत
@ फिलिप सिल्वा अच्छी तरह से देखा :)
जोड़ा लेखक M.Ali, स्रोत
@ user3067155 तो बस एम्पाइड का चयन करें और अलियाज्ड टेबल से नाम मैंने अपना जवाब अपडेट किया है कृपया एक नज़र डालें और नमूना डेटा जो आपने प्रदान किया है, किसी भी कर्मचारी के पास पर्यवेक्षक नहीं है जो इस उपलब्ध डेटा में आईडी है :)
जोड़ा लेखक M.Ali, स्रोत
आपके पास अतिरिक्त उपनाम है और मुझे लगता है कि आप उन्हें भ्रमित कर रहे हैं। यह चयन में एक के बजाय ई होना चाहिए, और चालू किया जाना चाहिए: e.supervisorid = b.empid
जोड़ा लेखक Filipe Silva, स्रोत

यदि आप केवल पर्यवेक्षकों को चाहते हैं, तो आपको केवल उन पंक्तियों का चयन करने की आवश्यकता है जिनके emp_id मान पर्यवेक्षक कॉलम में पाए जाते हैं:

SELECT
  SupervisorID   = emp_id,
  SupervisorName = name
FROM dbo.Employee
WHERE emp_id IN (SELECT supervisor FROM dbo.Employee)
;
0
जोड़ा