Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2011, 22:13   #1
Radzhab
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 30
По умолчанию Интересный sql запрос с картинками

Radzhab вне форума Ответить с цитированием
Старый 14.05.2011, 22:13   #2
Radzhab
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 30
По умолчанию

тьфу ты... испытание.. то есть анализ
Radzhab вне форума Ответить с цитированием
Старый 14.05.2011, 23:24   #3
ovt256
Форумчанин
 
Регистрация: 01.04.2011
Сообщений: 226
По умолчанию

В терминах картинки.
Если проводится анализ (например, анализ крови), то нет разницы, в каком году и в каком учреждении он был проведен. Другими словами, ID_Анализ не должен зависеть от времени и места проведения. А у Вас - зависит. Очевидна необходимость еще одной таблицы с описанием анализа. А то, что у Вас в таблице "Анализ", логичнее назвать "Результат анализа" или чем то подобным.

В вашем случае результат запроса будет всегда = 1, поскольку в таблице "Анализ" все значения поля Id_Анализ разные. Или я не врубился в вопрос?
Если руки золотые, то не важно, откуда они растут.

Последний раз редактировалось ovt256; 14.05.2011 в 23:28.
ovt256 вне форума Ответить с цитированием
Старый 15.05.2011, 00:25   #4
Radzhab
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 30
По умолчанию

да да да)) все верно.. тока с sql запросом не могу разобраться..

Код:
select id_анализ, sum(f) as Количество
from
(select a.id_анализ, g.id, 1 as f
from Главная g, Анализ a,
g inner join a on g.id=a.id_Главная,
group by a.id_анализ, g.id)
group by a.id_анализ
Вот подкинули мне такую тему... по мелочи не хочет работать..
Radzhab вне форума Ответить с цитированием
Старый 15.05.2011, 01:18   #5
ovt256
Форумчанин
 
Регистрация: 01.04.2011
Сообщений: 226
По умолчанию

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

Только требуется уточнение: "Вывести количество людей, кто прошел данный анализ" или "Вывести количество людей, кто хотя бы раз прошел данный анализ"

Если ничего не напутал, то для первого варианта:
SELECT count() FROM Главная, Анализ WHERE Главная.id = Анализ.Id_Анализ AND Анализ.Id_Анализ=N

а для второго -
SELECT count() FROM (SELECT Главная.id FROM Главная, Анализ WHERE Главная.id = Анализ.Id_Анализ AND Анализ.Id_Анализ=N GROUP BY Главная.id)

где N - ID_Анализа, для которого считаем людей.
Если руки золотые, то не важно, откуда они растут.
ovt256 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
sql -запрос pobedin БД в Delphi 7 28.08.2009 11:11
Запрос в Visal Basic.NET(Очень интересный код) reyn90 Помощь студентам 14 21.06.2009 17:59
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15