(SQL-запрос) Установите значение для сравнения отсутствия данных в том же столбце с другой строкой

#sql #ms-access

#sql #ms-access

Вопрос:

Пожалуйста, помогите,

Я пытаюсь выполнить запрос для MsAccess с подключением odbc со страницы PHP.

У меня есть эта таблица (table1)

 class   quantity    date 
1   30  01/04/2014 
2   23  01/04/2014 
3   23  01/04/2014 
4   14  01/04/2014 
5   5   01/04/2014 
1   41  01/05/2014 
2   38  01/05/2014 
3   36  01/05/2014 
4   28  01/05/2014 
5   25  01/05/2014 
6   1   01/05/2014 
  

Пожалуйста, помогите запросу получить этот результат :

 class   quantity    date 
1   30  01/04/2014 
2   23  01/04/2014 
3   23  01/04/2014 
4   14  01/04/2014 
5   5   01/04/2014 
6   0   0 
1   41  01/05/2014 
2   38  01/05/2014 
3   36  01/05/2014 
4   28  01/05/2014 
5   25  01/05/2014 
6   1   01/05/2014 
  

В выходных данных будет отображаться 0 как количество для класса 6, у которого фактически нет записи для класса 6 на 04.01.2014.

Комментарии:

1. Это действительно таблица или это запрос? Откуда вы знаете, что нужно иметь 6, а не 7 или 8 классов?

2. Выше приведена таблица в Microsoft Access, обычно у меня в базе данных от 1 до 6 классов, и нет записи с классом 6 за 4 месяц (апрель). В выходных данных мне нужно, чтобы все значения класса выдавали минимальное значение 0 в каждом классе.

Ответ №1:

Вы могли бы сделать это с union all . Но более общее решение заключается в следующем:

 select c.class, d.date, nz(t1.quantity, 0)
from ((select distinct class from table1) as c cross join
      (select distinct date from table1) as d
     ) left join
     table1 as t1
     on t1.class = c.class and t1.date = d.date
  

Комментарии:

1. Спасибо, <br /> но я все еще получил эту ошибку: odbc_exec (): ошибка SQL: [Microsoft] [ODBC Драйвер Microsoft Access] Синтаксическая ошибка в операции объединения