Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.08.2017
Сообщений: 102

Возможно ли получить все значение в одном запросе с двумя "SELECT"?

04.01.2018, 23:27. Показов 878. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ! Возможно ли получить все значение в одном запросе с двумя "SELECT" в C# ?

SQL
1
EXEC('SELECT * FROM [' + @LANGUAGE + '] WHERE ID = ' + @NUMBER +'') SELECT SUM(i.rowcnt) AS COUNT FROM sysindexes AS i INNER JOIN sysobjects AS o ON i.id = o.id WHERE i.indid < 2  AND OBJECTPROPERTY(o.id, 'IsMSShipped') = 0
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.01.2018, 23:27
Ответы с готовыми решениями:

Несколько операторов select в одном запросе
Доброго времени суток! Мое первое сообщение на моем первом форуме) Сам новичок в программировании, поэтому просьба строго не судить. ...

select-insert-update в одном запросе
мне нужен был запрос такого рода - проверить есть ли такая запись, если есть то к той записи просто счетчик +1, если нет то занести запись...

Совмещение двух SELECT в одном запросе
Всем доброе время суток! У меня есть таблица Place со столбцами ID_места, Номер_места, ID_автобуса, Номер_автобуса. Само задание...

10
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
04.01.2018, 23:58
fillzest, Можно.
Все зависит через какую библиотеку вы работаете

Вот например через Dapper

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using Dapper;
 
namespace ConsoleApp359
{
    internal class Program
    {
        public static readonly string DbFilePath = AppDomain.CurrentDomain.BaseDirectory + "TestDb.sqlite";
 
        private static void Main()
        {
            InitializeDb();
 
            using (IDbConnection dbConnection =
                new SQLiteConnection($"Data Source={DbFilePath};Version=3;foreign_keys = ON;"))
            {
                var sql = @"
                    SELECT 1;
                    SELECT * FROM Users WHERE Id > @id;
                ";
 
                using (var queryMultiple = dbConnection.QueryMultiple(sql, new {id = 1}))
                {
                    var number = queryMultiple.Read<int>().First();
                    var users = queryMultiple.Read<User>().ToList();
 
                    Console.WriteLine(number);
 
                    Console.WriteLine(string.Join(Environment.NewLine, users));
                }
            }
 
            Console.ReadKey(true);
        }
 
        private static void InitializeDb()
        {
            if (File.Exists(DbFilePath))
                File.Delete(DbFilePath);
 
            SQLiteConnection.CreateFile(DbFilePath);
 
            using (IDbConnection db = new SQLiteConnection($"Data Source={DbFilePath};Version=3;foreign_keys = ON;"))
            {
                db.Execute(
                    @"create table Users
                      (
                        Id                                  integer primary key AUTOINCREMENT,
                        Name                                TEXT
                      )");
 
 
                var users = new List<User>
                {
                    new User {Name = "Martin"},
                    new User {Name = "Frank"},
                    new User {Name = "Alex"}
                };
 
                foreach (var user in users)
                    db.Execute(@"INSERT INTO Users(Name) VALUES (@Name);", user);
            }
        }
    }
 
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
 
        public override string ToString() => $"{nameof(Id)}: {Id}, {nameof(Name)}: {Name}";
    }
}
Если вы работаете через низкоуровневое api то IDataReader.NextResult()
Вложения
Тип файла: zip ConsoleApp359.zip (4.5 Кб, 2 просмотров)
0
0 / 0 / 0
Регистрация: 13.08.2017
Сообщений: 102
05.01.2018, 00:42  [ТС]
Интересно , но я через Linq . Я просто ещё не пробовал думаю таким образом

C#
1
2
3
4
5
6
7
                            while (reader.Read())
                            {
                                texts += reader["Texts"].ToString();
                                count = reader.GetInt32(0);
                               
                            }
                            //int count = (int)cmd.ExecuteScalar();
Просто сам факт двух SELECT если это возможно ?

Добавлено через 16 минут
_exp10der_ Спасибо ! Я понял , значит IDataReader.NextResult() обеспечивает следующий результат следующего SELECT-а .
0
Эксперт .NET
 Аватар для Usaga
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,344
05.01.2018, 19:06
fillzest, такие вещи лучше либо Join-ить в одну выборку, либо делать два разных запроса. Не нужно так говнокодить.
0
0 / 0 / 0
Регистрация: 13.08.2017
Сообщений: 102
05.01.2018, 19:19  [ТС]
Usaga Там один Join уже есть , в имеете введу сделать Join для двух SELECT ?
0
Эксперт .NET
 Аватар для Usaga
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,344
05.01.2018, 20:04
fillzest, что я имел в виду, я уже сказал прямо: или объеденить всё в одну выборку (если возможно), либо разнести по разным запросам.
0
0 / 0 / 0
Регистрация: 13.08.2017
Сообщений: 102
05.01.2018, 20:07  [ТС]
Usaga Так в том то и дело что я не знаю как , разве бы я тут писал . У меня там один Join есть как объединить со вторым SELECT ?
0
Эксперт .NET
 Аватар для Usaga
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,344
07.01.2018, 15:01
fillzest, эти запросы у вас не связаны. Разделите на два обращения к СУБД. Так будет правильнее, не надо всё в одну кучу скидывать только потому, что можно.
0
0 / 0 / 0
Регистрация: 13.08.2017
Сообщений: 102
07.01.2018, 15:18  [ТС]
Я понял Usaga , ну а чисто технически , помогите решить проблему ! Как в Join все связать , как вы говорили ?
0
Эксперт .NET
 Аватар для Usaga
14293 / 9378 / 1352
Регистрация: 21.01.2016
Сообщений: 35,344
07.01.2018, 15:27
fillzest, отдельные выборки связываются через UNION\UNION ALL. Для этого они должны возвращать одинаковое количество полей одного одинакового же типа. Через JOIN всязываются данные из разных таблиц. Ещё можно сделать подзапрос. Но! Всё это используется только, когда данные как-то связаны. У вас же это просто два последовательных никак друг с другом не связанных запроса. Поэтому я рекомендую делать два разных обращения к базе, а не пихать всё в одно.
0
0 / 0 / 0
Регистрация: 13.08.2017
Сообщений: 102
07.01.2018, 15:55  [ТС]
Спасибо ! Usaga
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2018, 15:55
Помогаю со студенческими работами здесь

INSERT, SELECT, UPDATE, DELETE в одном запросе
На самом деле мне надо совместить INSERT и UPDATE. Дело в том, когда совмещаю примерно таким образом: mysql_query(&quot; INSERT...

Несколько математических расчетов в одном запросе SELECT
Доброго времени суток! Пишу программу для расчета по формулам на основе SQL. Использую запрос SELECT. Например: SELECT col1,...

Несколько выборок в одном запросе - возможно ли?
Добрый день! Есть несколько однотипных запросов по разным параметрам. SELECT US_Report.DSLAM, Count(US_Report.port_number) AS...

Несколько COUNT в одном агрегатном запросе. Возможно?
Здравствуйте. поиск не привел к пониманию вопроса есть таблица id ball 1 1 1 1 4 2 2 2 ...

Использование операторов SELECT, DELETE и UPDATE в одном запросе в PDO
возможно ли в одном запросе к базе использовать операторы SELECT, DELETE и UPDATE если можно то как (в примере) Добавлено через 11...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru