如何创建多个数据表的查询语法实现SQL Server中的运营商(How to create Quer

2019-10-22 05:54发布

我已经通过执行我的存储过程取3-4表。 现在,他们驻留在我的数据集。

我要保持这种数据集多种形式和我没有做这个数据集的任何DML操作。

现在,这个数据集包含4桌外面我要取一些记录显示数据。 存储在表中的数据是在一个形式一对多关系。

即如果交易。 牛每记录的记录。 然后这些N个记录被进一步映射到第三表的M个记录。

表格1

MAP_ID               GUEST_ID             DEPARTMENT_ID        PARENT_ID            PREFERENCE_ID
-------------------- -------------------- -------------------- -------------------- --------------------
19                   61                   1                    1                    5
14                   61                   1                    5                    15
15                   61                   2                    4                    10
18                   61                   2                    13                   23
17                   61                   2                    20                   26
16                   61                   40                   40                   41
20                   62                   1                    5                    14
21                   62                   1                    5                    15
22                   62                   1                    6                    16
24                   62                   2                    3                    4
23                   62                   2                    4                    9
27                   62                   2                    13                   23
25                   62                   2                    20                   24
26                   62                   2                    20                   25
28                   63                   1                    1                    5
29                   63                   1                    1                    8
34                   63                   1                    5                    15
30                   63                   2                    4                    10
33                   63                   2                    4                    11
31                   63                   2                    13                   23
32                   63                   40                   40                   41
35                   65                   1                    NULL                 1
36                   65                   1                    NULL                 1
38                   68                   2                    13                   22
37                   68                   2                    20                   25
39                   68                   2                    23                   27
40                   92                   1                    NULL                 1

表2

Department_ID        Department_Name         Parent_Id             Parent_Name                                                                                                                                                                                                                                              
-------------------- ----------------------- ---------------   ----------------------------------------------------------------------------------
1                    Food                    1, 5, 6               Food, North Indian, South Indian                                                                                                                                                                                                                                           
2                    Lodging                 3, 4, 13, 20, 23      Room, Floor, Non Air Conditioned, With Balcony, Without Balcony                                                                                                                                                                                                                                               
40                   New                     40                    SubNew

表3

Parent_Id            Parent_Name                                        Preference_ID             Preference_Name
-------------------- -----------------------------------------------  -----------------------  -------------------
NULL                 NULL                                               NULL                     NULL
1                    Food                                               5, 8                     North Indian, Italian
3                    Room                                               4                        Floor
4                    Floor                                              9, 10, 11                First, Second, Third
5                    North Indian                                       14, 15                   X, Y
6                    South Indian                                       16                       Dosa
13                   Non Air Conditioned                                22, 23                   With Balcony, Without Balcony
20                   With Balcony                                       24, 25, 26               Mountain View, Ocean View, Garden View
23                   Without Balcony                                    27                       Mountain View
40                   New                                                41           SubNew 

我有一个在这样一些时尚相关的这3个表。

表1将主这些2个表,即表2和表3。

我需要对他们查询作为

        SELECT Department_Id, Department_Name, Parent_Name FROM Table2 WHERE Department_Id in 
            (
                SELECT Department_Id FROM Table1 WHERE guest_id=65
            )


        SELECT Parent_Id, Parent_Name, Preference_Name FROM Table3 WHERE PARENT_ID in 
            (
                SELECT parent_id FROM Table1 WHERE guest_id=65 
            )

现在,我需要使用数据表上的这些查询。

所以我使用的查询语法,这和达到了这一点。

        var dept_list=  from dept in DtMapGuestDepartment.AsEnumerable()
                        where dept.Field<long>("PK_GUEST_ID")==long.Parse(63)
                        select dept;

这应该给我说有客人ID的所有部门的名单= 63

现在我想从表2中选择所有departments_name和PARENT_NAME其中guest_id = 63个,即部门我上面取出。

此相同的情况下,将遵循表3。

请建议如何做到这一点。

感谢紧跟耐心阅读我的问题。

Answer 1:

好吧,假设你有3个IEnumerable的增值经销商,每一个表。 你的第一个查询是这样的:

var records = from r1 in table1 where r1.GuestId == 63
              join r2 in table2 on r1.DepartmentId equals r2.DepartmentId
              select r2;

所述第二查询是大致相同的第一个,与表3而不是2接合。

var records = from r1 in table1 where r1.GuestId == 63
              join r3 in table3 on r1.ParentId equals r2.ParentId
              select r3;


文章来源: How to create Query syntax for multiple DataTable for implementing IN operator of Sql Server