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

Как реализовать вложеный запрос?

20.02.2019, 16:53. Показов 1339. Ответов 26

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые друзья.

Помогите решить задачу

Есть две таблицы
- первая TALON18 c полями DG10_1, SYS_N,
- вторая (справочник) MKB101 c полями KOD, KAT_1, KAT_2

Пользуясь этими данными создаю запрос.
C#
1
string dbf = "SELECT KAT_1 AS Диагноз , COUNT(DG10_1) AS Кол_Пациентов FROM TALON18 WHERE DG10_1 IN (SELECT KOD FROM MKB101 WHERE KAT_1 = 'W') GROUP BY KAT_1";
Но результат вылетает с ошибкой (Нету значения для одного или нескольких необходимых параметров.)

Помогите разобраться уже мозги закипели.

Результатом должно быть два поля

Диагноз = Кол_Пациентов
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2019, 16:53
Ответы с готовыми решениями:

вложеный запрос
здравствуйте. структура таблиц такая: 1-ая таблица договора(*dogovor, data'.......) 2-ая таблица prodaja(*nomerprod,(fk)dogovor,...

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

Вложеный запрос не получается
Добрый день уважаемые форумчани. Сел писать запрос...А уже всю голову изломал,не знаю как реализовать :wall:...Вот то что я сделал: ...

26
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
20.02.2019, 19:05
shadow_2, 1.Обе таблицы должны быть в одной папке.
2. Попробуйте через join
SQL
1
2
3
4
SELECT KAT_1 AS Диагноз , COUNT(DG10_1) AS Кол_Пациентов FROM TALON18 JOIN
MKB101 ON DG10_1=KOD 
WHERE KAT_1 = 'W' 
GROUP BY KAT_1
dbf может не поддерживать стандартный синтаксис T-SQL и у разных драйверов разные возможности.
1
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.02.2019, 19:39  [ТС]
Цитата Сообщение от Igr_ok Посмотреть сообщение
Попробуйте через join

Спасибо

Блин , я тут в своём запросе заметил ошибку

SQL
1
2
3
4
SELECT KAT_1 AS Диагноз , COUNT(DG10_1) AS Кол_Пациентов FROM TALON18 JOIN
MKB101 ON DG10_1=KOD 
WHERE KAT_1 = 'W' 
GROUP BY KAT_1

Вот эта колонка KAT_1 AS Диагноз не из таблицы TALON18 а из MKB101 и теперь вся конструкция рассыпается .

Подскажите как мне сгруппировать по колонке одной таблицы и при этом посчитать количество по колонке другой?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
20.02.2019, 20:10
Цитата Сообщение от shadow_2 Посмотреть сообщение
Вот эта колонка KAT_1 AS Диагноз не из таблицы TALON18 а из MKB101 и теперь вся конструкция рассыпается .
В вашем варианте-да, с join-нет.
1
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.02.2019, 20:50  [ТС]
Вот переделал так

C#
1
string dbf = "SELECT KAT_1 AS Диагноз  FROM MKB101  JOIN TALON18 ON COUNT(DG10_1) AS Кол_Пациентов , DG10_1 = KOD WHERE KAT_1 = 'W' GROUP BY KAT_1";
но не работает Ошибка ( Ошибка синтаксиса в предложении FROM )

Добавлено через 35 минут
Цитата Сообщение от Igr_ok Посмотреть сообщение
В вашем варианте-да, с join-нет.
А что это означает? , что с join такая конструкция

Цитата Сообщение от Igr_ok Посмотреть сообщение
SELECT KAT_1 AS Диагноз , COUNT(DG10_1) AS Кол_Пациентов FROM TALON18 JOIN MKB101 ON DG10_1=KOD WHERE KAT_1 = 'W' GROUP BY KAT_1
должна работать даже если таблицы перепутаны местами ?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
20.02.2019, 23:15
Цитата Сообщение от shadow_2 Посмотреть сообщение
что с join такая конструкция должна работать даже если таблицы перепутаны местами ?
для join в данном случае порядок таблиц не имеет значения.
Цитата Сообщение от shadow_2 Посмотреть сообщение
Вот переделал так
Там какая-то бессмыслица.
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.02.2019, 23:45  [ТС]
Цитата Сообщение от Igr_ok Посмотреть сообщение
для join в данном случае порядок таблиц не имеет значения.
Почему-то Ваш вариант не хочет работать

Вылетает с ошибкой ( Ошибка синтаксиса в предложении FROM ) Как решить ?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
21.02.2019, 09:51
shadow_2, я предупреждал
Цитата Сообщение от Igr_ok Посмотреть сообщение
dbf может не поддерживать стандартный синтаксис T-SQL и у разных драйверов разные возможности.
Но сначала хотелось бы увидеть ваш код.
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
21.02.2019, 11:04  [ТС]
Цитата Сообщение от Igr_ok Посмотреть сообщение
Но сначала хотелось бы увидеть ваш код.
Спасибо Igr_ok

Вроде справился. Вот немного переделал. Так работает. Действительно видать для dbf нужен другой синтаксис и join не подходит.

C#
1
string dbf = "SELECT MKB101.KAT_1 AS Диагноз , COUNT(TALON18.DG10_1) AS Кол_Пациентов FROM MKB101,TALON18  WHERE TALON18.DG10_1 = MKB101.KOD  AND MKB101.KAT_1 = 'W' GROUP BY KAT_1";
По ходу возник ещё один вопрос а как объединить несколько запросов в один ?
И ещё (Вы уж извините) Просто эта тема очень слабо освещена . Мне необходимо к этому запросу прикрутить результат ещё из нескольких таблиц с добавлением новых колонок а потом весь отображённый в DataGrid результат сохранить в отдельный dbf ? (Или дайте ссылки где об этом почитать )
Знаю уже задолбал всех но ничего не могу поделать . Очень мало знаний . А времени нет.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
21.02.2019, 12:15
shadow_2, Я бы просто перегнал все таблицы из dbf в нормальную СУБД и забыл про них.
Но если уж мучаться с dbf, ставьте драйвер FoxPro, у него больше возможностей.
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
21.02.2019, 14:18  [ТС]
Цитата Сообщение от Igr_ok Посмотреть сообщение
Я бы просто перегнал все таблицы из dbf в нормальную СУБД и забыл про них.
Нельзя . Контролирующая организация использует программу под Fox и структура таблиц должна быть идентичной.
Вот если прога станет самодостаточной ,тогда и можно будет предложить, как альтернативу перейти на SQL.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
21.02.2019, 15:09
твой первый запрос имел неверный синтаксис, верно, потому что ты не правильно запрос написал - в JOIN нет связки по ключевым полям. не верю, что JOIN не работает.
объединять запросы какой смысл? там нет связей между таблицами?
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
21.02.2019, 16:08  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
твой первый запрос имел неверный синтаксис
Да ,я же потом объяснил что перепутал порядок таблиц.
запрос переделал теперь всё выводит так как нужно

Но суть не в том Тут ещё одна проблема
Создал ещё один запрос (он рабочий) проверил.

А теперь вопрос как мне эти два запроса объединить ?

C#
1
"SELECT MKB101.KAT_1 AS Диагноз , COUNT(TALON18.DG10_1) AS Кол_Пациентов FROM MKB101,TALON18  WHERE TALON18.DG10_1 = MKB101.KOD  AND MKB101.KAT_1 = 'W' GROUP BY KAT_1";
C#
1
string dbf = "SELECT COUNT(TALON18.SYS_N) AS 'з_них_чоловіків' FROM U3,MKB101,TALON18  WHERE TALON18.DG10_1 = MKB101.KOD AND TALON18.SYS_N = U3.SYS_N AND MKB101.KAT_1 = 'W' AND U3.POL = '2' GROUP BY POL";
Думаю через UNION но как этот оператор прописать в c#?
И ещё как запрос в с# переносить построчно ?
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
21.02.2019, 16:21
я не понимаю, зачем тебе два запроса писать, если можно все в один впихнуть ?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
21.02.2019, 16:29
Цитата Сообщение от shadow_2 Посмотреть сообщение
Думаю через UNION но как этот оператор прописать в c#?
каким боком UNION и c#? для шарпа текст скрипта может быть любой, лишь бы был верный для источника данных
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
21.02.2019, 16:54  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
я не понимаю, зачем тебе два запроса писать, если можно все в один впихнуть ?
Но как же иначе ?

У меня больше десятка таких запросов будет !!!
И выводиться все результаты будут в колонки одного DataGrid.

Добавлено через 22 минуты
Цитата Сообщение от pincet Посмотреть сообщение
каким боком UNION и c#? для шарпа текст скрипта может быть любой, лишь бы был верный для источника данных
Честно - ничего не понял.
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
21.02.2019, 16:56
Цитата Сообщение от shadow_2 Посмотреть сообщение
естно - ничего не понял.
Цитата Сообщение от shadow_2 Посмотреть сообщение
Думаю через UNION но как этот оператор прописать в c#?
читай до полного просветления
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
21.02.2019, 17:10
два твои запроса включают в себя одинаковый набор таблиц, почему бы просто не расширить запрос, например, так?
SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT 
MKB101.KAT_1 AS Диагноз , 
POL,
COUNT(TALON18.SYS_N) AS 'з_них_чоловіків',
COUNT(TALON18.DG10_1) AS Кол_Пациентов 
FROM U3,MKB101,TALON18  
WHERE TALON18.DG10_1 = MKB101.KOD 
AND TALON18.SYS_N = U3.SYS_N 
AND MKB101.KAT_1 = 'W' 
AND U3.POL = '2' 
GROUP BY POL, KAT_1
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
21.02.2019, 17:18  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
для шарпа текст скрипта может быть любой, лишь бы был верный для источника данных
Ну вот что єто значит ?

SQL запросы с моими таблицами работают значит и оператор UNION также должен с ними работать ?

И кроме того , как по другому объединить десяток запросов?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
21.02.2019, 17:22
Цитата Сообщение от shadow_2 Посмотреть сообщение
SQL запросы с моими таблицами работают значит и оператор UNION также должен с ними работать ?
может, стоить уже чего-то и почитать на досуге?
UNION - предложения языка SQL. А то, что ты считаешь "SQL запросами" для c# - строка, которую код передаст драйверу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2019, 17:22
Помогаю со студенческими работами здесь

Вложеный запрос с одинаковыми значениями
Вот запрос:SELECT Pupil FROM pupils WHERE CustNo4 = (SELECT CustNo4 FROM classpupil WHERE CustNo1 = (SELECT CustNo1 FROM classes WHERE...

Как найти последний вложеный элемент у одного из вложеных массивов
Как найти последний вложенный элемент двумерного массива? <?php $arr = array( "foo" => "bar", ...

Как реализовать запрос
Имеются таблицы со следующими полями: "Requests" (ReqNumber - номер заявки, ReqDate - дата заявки, Department-отдел, ReqConclNumber...

Как реализовать запрос?
$Query = mysql_query("SELECT * FROM `quests` WHERE `loc`='".$pers."' AND `x`='".$pers."' AND `y`='".$pers."'"); $Query1 =...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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