I have two sql queries as follows
SELECT ADGroupName, ADGroupDescription, ADGroupEmail
FROM ADGroup
WHERE ADGroupName = 'XXXX'
This returns me a single result of information about a particular group.
SELECT ADUser.ADUserFirstName as FirstName, ADUser.ADUserLastName as
LastName
FROM ADUser WHERE ADUser.ADUserName
IN(SELECT ADUser_ADGroup.ADUGUserName
FROM ADUser_ADGroup
WHERE ADUser_ADGroup.ADUGGroupName = 'XXXX_Manager')
This returns me a list of Managers for the group I got information about in above query. Is it possible to merge both queries into one sql query?
Whole code is as follow
public AdGroupDto GetGroupByGroupName(string groupName)
{
var sql = "SELECT ADGroupName, ADGroupDescription, ADGroupEmail " +
"FROM ADGroup " +
"WHERE ADGroupName = @0";
var result = _db.Single<AdGroupDto>(sql, groupName);
var sqlForTeacher = "SELECT ADUser.ADUserFirstName as FirstName, ADUser.ADUserLastName as LastName " +
"FROM ADUser WHERE ADUser.ADUserName " +
"IN(SELECT ADUser_ADGroup.ADUGUserName " +
"FROM ADUser_ADGroup " +
"WHERE ADUser_ADGroup.ADUGGroupName = @0)";
var data = _db.Query<UserInfoDto>(sqlForTeacher, groupName + "_Manager").ToList();
result.Teachers = data;
return result;
}
Silke -- Kruse -- ZZA-KL-1A -- Pupils of the ZZA-KL-1A class
Sille -- Dahl -- ZZA-KL-1A -- Pupils of the ZZA-KL-1A class
If I got your tables structure correctly, and assuming you have foreign keys in every table, something like this should solve your problem:
SELECT ADUser.ADUserFirstName AS FirstName, ADUser.ADUserLastName AS LastName, ADGroupName, ADGroupDescription, ADGroupEmail
FROM ADUser
INNER JOIN ADUser_ADGroup ON ADUser.<id> = ADUser_ADGroup.<user_id>
INNER JOIN ADGroup ON ADGroup.<id> = ADUser_ADGroup.<group_id>
WHERE ADGroup.ADGroupName = 'XXXX' AND ADUser_ADGroup.ADUGGroupName LIKE '%Manager%'
Just make sure to use specific column names for the JOIN
clauses.
UPD: It's a code for MySQL/MariaDB.
Try this one:
SELECT U.ADUserFirstName as FirstName, U.ADUserLastName as LastName, G.ADGroupName, G.ADGroupDescription, G.ADGroupEmail,
FROM ADUser U
INNER JOIN ADUser_ADGroup UG ON U.ADUserName = UG.ADUGUserName
INNER JOIN ADGroup G ON UG.ADUGGroupName = G.ADGroupName + '_Manager'
WHERE G.ADGroupName = 'XXXX'
This will compare the group name with the ADUser_ADGroup
appended with _Manager
Above query is for SQL Server.
If you are using Oracle:
SELECT U.ADUserFirstName as FirstName, U.ADUserLastName as LastName, G.ADGroupName, G.ADGroupDescription, G.ADGroupEmail,
FROM ADUser U
INNER JOIN ADUser_ADGroup UG ON U.ADUserName = UG.ADUGUserName
INNER JOIN ADGroup G ON UG.ADUGGroupName = G.ADGroupName || '_Manager'
WHERE G.ADGroupName = 'XXXX'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.