Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 10
1

Выборка одного значения из 2 связных таблиц

11.06.2015, 15:36. Показов 1478. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, поправьте пожалуйста код.
Есть 2 таблицы, в первой список товаров по одной записи на вид, во второй таблице фотографии товара - несколько штук на каждый товар. Надо в GridView отобразить по одной строке с каждым товаром и одной фотографией к нему, например первой или (в общем любой). Моим кодом выводятся все фотографии с повторением одного товара из 1 таблицы, вот код.

C#
1
2
3
4
5
6
7
string searchcat = (string)Page.RouteData.Values["categoryID"];
        var categ = from n in DCDC.Products
                    join m in DCDC.Image
                        on n.id equals m.product_id
                    where n.category == searchcat
                    select new { image = m.image_url, n.product, n.id, n.prise };
        GridView1.DataSource = categ;
сильно не пинайте, мат часть позже подучу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2015, 15:36
Ответы с готовыми решениями:

Выборка данных из связных таблиц
Всем доброго времени суток. У меня есть схема бд, в этой схеме есть таблицы, которые связываются...

сложить и вставить значения связных таблиц
Всем доброго времени суток. Что хочу сделать - нарисовал на скрине. вкратце нужно чтобы значения...

Выборка из разных таблиц в зависимости от значения
Как сделать так, чтобы при выборке SQL, в зависимости от значения поля, выбиралась определенная...

Выборка из разных таблиц в зависимости от значения поля
Как сделать так, чтобы при выборке SQL, в зависимости от значения поля, выбиралась определенная...

4
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
11.06.2015, 20:32 2
Лучший ответ Сообщение было отмечено bvalex как решение

Решение

Попробуйте так:
C#
1
2
3
4
5
6
7
        var categ = from n in DCDC.Products
                    join m in DCDC.Image
                       on n.id equals m.product_id
                       into images
                    where n.category == searchcat
                    select new { image = images.FirstOrDefault().image_url, n.product, n.id, n.prise };
        GridView1.DataSource = categ;
1
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 10
12.06.2015, 00:40  [ТС] 3
Спасибо, выручили - это работает. into - построение промежуточного представления если не ошибаюсь. Буду решать следующую задачу. Если картинки с данным id продукта нет, то скорее всего возникнет исключение и весь цикл развалится, возможно придется обрабатывать картинку и продукт раздельно, что бы при отсутствии первой, заменять ее на какую-то по умолчанию.
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
12.06.2015, 01:28 4
Цитата Сообщение от bvalex Посмотреть сообщение
Если картинки с данным id продукта нет, то скорее всего возникнет исключение и весь цикл развалится
Не факт — попробуйте.
Запрос к базе же будет транслирован в SQL и выполнен на стороне базы, а какой там может быть NullReferenceException?

Если таки упадет, то достаточно модифицировать запрос:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        var categ = from n in DCDC.Products
                    join m in DCDC.Image
                       on n.id equals m.product_id
                       into images
                    where n.category == searchcat
                    select new 
                    { 
                       image = (from image in images select image.image_url).FirstOrDefault(), 
                       n.product, n.id, 
                       n.prise 
                    };
        GridView1.DataSource = categ;
0
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 10
12.06.2015, 02:45  [ТС] 5
Не упал, просто выводит пустую картинку. Теперь проблема как вместо пустой картинки вставлять свою по умолчанию. Есть такая функция DefaultIfEmpty(), пока не разобрался, может и FirstOrDefault можно вставлять значения по умолчанию вместо null.
0
12.06.2015, 02:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2015, 02:45
Помогаю со студенческими работами здесь

15 связных таблиц
Какие таблицы можно придумать? чтобы они были связаны друг с другом, надо минимум 15, мне больше 9...

Выборка одного значения из нескольких столбцов по условию
Есть таблица. нужно запросом выбрать одно значение из нескольких столбцов, удовлетворяющее условию...

Удаление данных из связных таблиц
Здравствуйте. Есть несколько таблиц: товары, заказы, продажи, они связана связями один ко многим...

Запрос из нескольких связных таблиц
Проблема такая, надо создать поле, в котором будет подсчитываться размер поступивших и отправленных...

Вывод данных из связных таблиц
Всем привет. Я имею в своём веб-приложении две базы: profiles(профили) и posts(посты) связанные как...

Запись одного значения в несколько таблиц
Доброго времени суток. Дайте пинок в нужном направлении. Есть несколько таблиц с одинаковой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru