Как создать синтаксис запроса для нескольких DataTable для реализации оператора IN сервера Sql - PullRequest
1 голос
/ 24 мая 2010

Я получил 3-4 таблицы, выполнив мою хранимую процедуру.Теперь они находятся в моем наборе данных.

Я должен поддерживать этот набор данных для нескольких форм, и я не выполняю никаких операций DML с этим набором данных.

Теперь этот набор данных содержит 4 таблицы, из которых мне нужно выбрать некоторые записи для отображения данных.Данные, хранящиеся в таблицах, имеют форму отношения один ко многим.

, т. Е. В случае транзакций.N записей на запись.Затем эти N записей затем преобразуются в M записей 3-й таблицы.

Таблица 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 
            )

Теперь мне нужно использовать эти запросы в DataTables.

Так что я используюСинтаксис запроса для этого и дошел до этого момента.

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

Это должно дать мне список всех отделов, которые имеют идентификатор гостя = 63

Теперь я хочу выбрать все отделы_имя и имя_пользователяиз Таблицы 2, где guest_id = 63, т.е. отделы, которые я выбрал выше.

Этот же случай будет использован для Таблицы 3.

Пожалуйста, предложите, как это сделать.

Спасибо засохраняя терпение для чтения моего вопроса.

1 Ответ

1 голос
/ 25 мая 2010

Ну, предположим, у вас есть 3 числа, по одному для каждой таблицы. Ваш первый запрос будет выглядеть так:

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;
...