2010-06-03 3 views
0

Привет, ребята, сначала извините, я не могу войти в систему с помощью моего провайдера yahoo. В любом случае у меня есть эта проблема. Позвольте мне объяснить это вам, а затем я покажу вам фотографию.Требуется SQL-запрос для базы данных доступа

У меня есть таблица доступа db. Он имеет «идентификатор отчета», «идентификатор реципиента» и «имя получателя» и «отчет req». То, что означает таблица, означает, что пользователь, использующий этот отчет, все еще нуждается в нем или может лишить его вывода из эксплуатации.

Вот как выглядят данные (заблокированные пользователи и пользователи пользователей): * проверьте приведенную ниже ссылку, я не могу опубликовать фотографии cuz yahoo open id provider is not working.

Поэтому в основном мне нужно иметь 3 запросов на выборку:

1) Выбрать все отчеты, где для каждого отчета, ВСЕ пользователи сказали не «reportreq». На простом английском языке мне нужен список всех отчетов, которые мы должны выводить из эксплуатации, потому что никто этого не хочет.

2) Выделите все отчеты, в которых требуется отчет, а также размер отпечатка более чем 0. Таким образом, мы можем видеть, какой отчет нужно распечатать и сохранить бумагу, а не печатать все отчеты.

3) Список всех отчетов, в которых поле reportreq пусто. Думаю, я смогу понять это сам.

Это использование Access/VBA, и данные будут экспортированы в таблицу Excel. Я просто простой запрос, если он существует, или alogorithm, чтобы сделать это быстро. Я просто попытался сделать «матрицу», и потребовалось около 2 часов для заполнения.

https://docs.google.com/uc?id=0B2EMqbpeBpQkMTIyMzA5ZjMtMGQ3Zi00NzRmLWEyMDAtODcxYWM0ZTFmMDFk&hl=en_US

+0

Обратите внимание, что первый принятый запрос небезопасен тем, что он будет включать отчеты без Reportreq, то есть где reportreq равно null. – Fionnuala

ответ

-1

1) Этот запрос работает, принимая каждый идентификатор отчета и ищет строки, в которой кто-то не отмечен как «не требуется» (в предположении, что «п», и ' N '- единственные способы указать это). Если он найдет все строки для этого идентификатора отчета, которые все еще необходимы.

SELECT DISTINCT report_id FROM table_name AS outer 
    WHERE NOT EXISTS 
    (SELECT report_id FROM table_name 
    WHERE report_req NOT IN ("n","N") 
     AND report_id=outer.report_id); 

2) Этот запрос просто суммирует значения batchprintcopy на ослабленный report_id основы (где требуется отчет, такие же предположение, что и выше).

SELECT report_id, SUM(batchprintcopy) FROM table_name 
    WHERE report_req NOT IN ("n","N") 
    AND batchprintcopy > 0 
    GROUP BY report_id; 

3)

SELECT report_id FROM table_name 
    WHERE report_req IS NULL OR report_req = ""; 
+0

Эй, вы можете это объяснить? Кстати. thankyou также номер один dosnt work :( – masfenix

+0

Я пропустил круглую скобку в # 1. Должен быть исправлен сейчас. Также добавлены краткие объяснения для # 1 и # 2. # 3 не требует пояснений. – VeeArr

+0

Я исправил скобки, но я означало, что запрос возвращает 0 результатов. – masfenix

0

Я предлагаю:

SELECT DISTINCT o.reportid, o.ReportReq 
FROM All_Reports AS o 
WHERE o.reportid Not In (SELECT reportid FROM All_Reports 
    WHERE reportreq <>"N" Or reportreq Is Null) 

Существует проблема с этим запросом в том, что я отмечаю, что образец документа имеет значение для batchprintcopies где reportreq равна нулю , так что здесь есть три возможности:

1 Исключить отчеты, где reportreq null:

SELECT reportid, SUM(batchprintcopies) FROM All_Reports 
WHERE reportreq <>"N" 
GROUP BY reportid 
HAVING Sum(batchprintcopies)>0 

2 Группировки reportreq для обеспечения дальнейшего descisions:

SELECT reportid, reportreq, Sum(batchprintcopies) AS SumOfCopies 
FROM All_Reports 
GROUP BY reportid, reporteeq 
HAVING Sum(batchprintcopies)>0 

-Включить отчеты, где reportreq равно нулю:

SELECT reportid, SUM(batchprintcopies) FROM All_Reports 
WHERE reportreq <>"N" Or reportreq Is Null 
GROUP BY reportid 
HAVING Sum(batchprintcopies)>0 

Это маловероятно, но не исключено, что поле (столбец) содержит строку с нулевой длиной. Я считаю, их следует избегать.

SELECT reportid FROM All_Reports 
WHERE reportreq IS NULL OR reportreq = ""; 
Смежные вопросы