Как да проверите дали има само един запис за определен идентификатор

Как да проверите дали има само един запис за определен идентификатор

Имам две таблици, наречени Tbl_Company и Tbl_Employee Извличам служители, както следва-

SELECT DISTINCT emp.employee_id
FROM Tbl_Company comp
           , Tbl_Employee emp
WHERE 
           emp.company_id = comp.company_id 
           AND emp.company_id = 1234;

Тази заявка връща точно една стойност. Как мога да се уверя, че горната заявка връща точно една стойност за всеки comany_id, който въвеждам.

Опитах се да използвам решения, дадени в Тази публикация без успех. Има ли някакъв по-прост начин да направите това.


person Microsoft DN    schedule 09.06.2015    source източник
comment
кой ред за всяка компания бихте искали да върнете?   -  person davegreen100    schedule 09.06.2015
comment
Искам да получа Emploee_Id и искам да се уверя, че трябва да има само един Emploee_ID за company_id   -  person Microsoft DN    schedule 09.06.2015
comment
Всяка ваша компания има само един служител? Това няма смисъл.   -  person Aaron Digulla    schedule 09.06.2015
comment
@AaronDigulla: това е само пример   -  person Microsoft DN    schedule 09.06.2015
comment
така че ако искате да видите кои компании имат повече от 1 служител, вместо това не искате отделен, а БРОЙ   -  person davegreen100    schedule 09.06.2015
comment
Какво искате да се случи, когато има няколко служители? Трябва ли заявката да е неуспешна? Да се ​​върнат повече от един ред? Изберете един от служителите на случаен принцип? ... о, чакай, Microsoft. Случайно, разбира се! С 12,7436348% шанс за син екран. Колко съм глупав.   -  person Aaron Digulla    schedule 09.06.2015
comment
@AaronDigulla Заявката трябва да е неуспешна, ако има множество резултати за company_id   -  person Microsoft DN    schedule 09.06.2015
comment
@microsoft, няма смисъл заявката да е неуспешна, не можете да направите заявка неуспешна само защото не ви харесват данните. Със сигурност бихте искали да знаете за данни, които противоречат на вашите бизнес правила, за да можете да ги коригирате   -  person davegreen100    schedule 09.06.2015
comment
@davegreen100 Може да използвам тази заявка няколко пъти на различни места дори като ПОДЗАЯВКА. Също така, това е само примерна заявка, която съм написал, за да получа решението, оригиналът е огромен.   -  person Microsoft DN    schedule 09.06.2015
comment
Бих написал заявка за ПРЕБРОЯВАНЕ на броя на служителите на компания (така че ГРУПИРАНЕ ПО фирма), можете също да използвате HAVING › 1, за да идентифицирате тези, които се нуждаят от действие.   -  person davegreen100    schedule 09.06.2015


Отговори (3)


това ще върне по един ред на компания

SELECT comp.companyid, max(emp.employee_id) lastEmployeeID
FROM Tbl_Company comp
           , Tbl_Employee emp
WHERE 
           emp.company_id = comp.company_id 
           AND emp.company_id = 1234
GROUP BY comp.companyid
person davegreen100    schedule 09.06.2015
comment
Моля, обяснете какво сте направили. - person Aaron Digulla; 09.06.2015
comment
оригиналната заявка избра РАЗЛИЧЕН идентификатор от всички компании, аз показах един идентификатор за всяка компания, като включих идентификатора на компанията в избора и групата по. Трудя се да видя добра причина да искам запитването. - person davegreen100; 09.06.2015

следната заявка е проста и гъвкава. ще върне списък на всички служители, които са сами в своите компании (връща се с пълна информация за служителите).

можете да проверите дали определена компания има един самотен служител чрез активиране на условие за компанията или можете да проверите дали служителят е самотен служител, като активирате условие за служител.

SELECT emp.*
FROM Tbl_Company comp
           /*, Tbl_Employee emp*/
WHERE (emp.company_id , 1) in (select t.company_id, count(t.employee_id) from Tbl_Company t )
  --AND emp.company_id = 1111 /*filter conditions on company_id*/
  --AND emp.employee_id = 1234/*filter conditions on employee_id*/;
person Eng. Samer T    schedule 09.06.2015

Реших това, като използвах ans от @davegreen100 в коментар

SELECT comp.companyid, count(distinct emp.employee_id), 
FROM Tbl_Company comp
           , Tbl_Employee emp
WHERE 
           emp.company_id = comp.company_id 
           AND emp.company_id = 1234
GROUP BY comp.companyid

Това ще ми даде броя служители на компания

person Microsoft DN    schedule 09.06.2015
comment
вашият COUNT(DISTINCT) е неправилен, той трябва да брои employee_id, а не companyid - person davegreen100; 09.06.2015
comment
... или можете да използвате count(*) - person David Aldridge; 09.06.2015
comment
comp.employeeId -- employeeid е колона в таблицата на компанията? - person David Aldridge; 09.06.2015
comment
@DavidAldridge Отговорът е редактиран - person Microsoft DN; 11.06.2015