SQL возвращает не выбранные строки - PullRequest
0 голосов
/ 12 марта 2012

как сделать так, чтобы этот sql-запрос возвращал ноль для функции count вместо выбранных строк?

select ur.uno, count(*)*5
from userresponse ur, question q
where ur.eno = q.eno 
  and q.correctanswer = ur.response 
  and q.qno = ur.qno 
  and ur.uno = '1' 
  and q.eno = '1'
group by ur.uno

q.correctanswer = ur.response для этого запроса никогда не имеет значения, поэтому не выбрана ни одна строка, однако я хочу вернуть ноль.

пример данных

Примечание: - "||" используется для объединения строк - каждая строка находится между парой одинарных кавычек. - каждая запись находится между "(" и ")". - поля упорядочены в соответствии с полями в таблицах - "\ n" означает новую строку

====== данные экзаменов ==========

(1, «Программирование на Java», 60,1)

(3, «Элементарная история», 10,3)

====== Вопросы к данным ===========

(1,1, 'Выберите операции, которые можно выполнить со строкой объекты: (A) + \ n (B) + = \ n (C) - \ n (D)% \ n (E) ^ ',' B ')

(1,2, 'Что будет результатом выражения \ na% b \ nwhen a и b имеют тип int и имеют значения a = -17 и b = -6? ',' A ')

(1,3, 'Что будет результатом выражения \ na% b \ nwhen a и b имеют тип int и имеют значения a = 10 и b = 6? ',' B ')

(1,4, 'Рассмотрим следующий код: \ nint x, y, z \ ny = 1 \ nz = 5 \ nx = 0 - (++ y) + z ++ \ nПосле выполнения этого значения будут равны x, y и z? ',' C ')

(1,5, 'Определите правильные утверждения: \ n (A) int a = 13, a >> 2 = 3 \ n (B) int b = -8, b >> 1 = -4 \ n (C) int a = 13, a >>> 2 = 3 \ n (D) int b = -8, b >>> 1 = -4 ',' E ')

(1,6, 'Если не присвоено значение, переменная типа char имеет следующее значение по умолчанию: ',' A ')

(1,7, 'Каким будет значение a после выполнения следующего утверждения: \ nint a = 23, b = 34 \ na = ((a (1,8, 'Что из перечисленного не является шестнадцатеричным числом? \ N (A) 999 \ n (B) (hex) 23 \ n (C) 0x556 \ n (D) 0x1F2 ',' C ')

(1,9, 'if (check4Biz (storeNum)! = Null) {} \ nОтносительно вышеизложенного, какой тип данных может быть возвращен методом check4Biz ()? ',' D ')

(1,10, 'Выберите недействительные операторы присваивания из следующее: \ n (A) с плавающей запятой x = 238,88 \ n (B) double y = 0x443 \ n (C) int n = (int) true \ n (D) long m = 778645 ',' A ')

(1,11, 'int j \ nfor (int i = 0i <14i ++) {\ nif (i <10) {\ nj = 2 + i \ n} \ nSystem.out.println ("j:" + j + "i:" + i) \ n} \ nЧто НЕПРАВИЛЬНО с кодом выше? ',' E ') </p>

(1,12, 'Рассмотрим следующий код: \ nclass ClassA \ n {\ npublic static void main (String args []) \ n {\ nClassB b = classB () \ n} \ nClassA (int x) { } \ n} \ nclass ClassB расширяет ClassA \ n {\ n} \ nЧто произойдет, когда мы скомпилировать и запустить этот код? ',' A ')

(1,13, 'Ключевые слова зарезервированы, но не использовались в начальной версии Java являются: \ n (A) объединение \ n (B) const \ n (C) внутренний \ n (D) Перейти к \ n (E) логическое \ n (F) синхронизированы», 'С') * 1 043 *

(1,14, «Мы бы хотели, чтобы член класса был виден во всех подклассы независимо от того, в каком пакете они находятся. Какой из следующие ключевые слова могли бы достичь этого? ',' D ')

(1,15, «Что из перечисленного не является ключевым словом? \ N (A) NULL \ n (B)» реализует \ n (C) защищенную \ n (D) расширенную \ n (E) строку ',' B ')

(3,1, «За какую войну велась битва при Геттисберге?», «C»)

(3,2, «Сколько Нил Армстронг и Базз Олдрин прошли \ n» || «минуты на луне в 1696 году?», «Б»)

(3,3, «Какие президенты занимали свои посты во время Второй мировой войны?», «D»)

(3,4, 'В коммунистической экономической системе люди:', 'B')

(3,5, «Какой президент не умер при исполнении служебных обязанностей?», «D»)

(3,6, «Какой штат отказался участвовать в Конституционном съезде» \ n '|| в 1787 году, потому что оно не хотело правительства Соединенных Штатов \ n '|| «вмешиваться в уже установленные государственные дела?», «А»)

(3,7, «Кто основал буддизм?», «А»)

(3,8, «Где Индия?», «D»)

(3,9, «Какая религия доминирует в Индии?», «B»)

(3,10, «Рядом с какой рекой археологи нашли Индию» \ n '|| 'первая цивилизация?', 'B')

========== answerOption data ============

(3,8, «А», «Австралия») (3,8, «В», «Америка») (3,8, «С», «Африка») (3,8, «D», «Азия») (3,1, «A», «Вторая мировая война») (3,1, «B», «The Революционная война ») (3,1,« C »,« Гражданская война ») (3,1,« D »,« Первая мировая война ») (3,2, «A», «123») (3,2, «B», «None») (3,2, «C», «10») (3,2, «D», «51 «) (3,3, «А», «Франклин Д. Рузвельт») (3,3, «Б», «Дуайт Д. Эйзенхауэр») (3,3, «C», «Гарри Трумэн») (3,3, «D», «A и C») (3,4, «A», «Are вынуждены работать как рабы »(3,4,« Б »,« Работа на общее благо ») (3,4, «C», «Работа с домашних компьютеров») (3,4, «D», «Не работай»)
(3,5, «А», «Джон Ф. Кеннеди») (3,5, «Б», «Франклин Д. Рузвельт») (3,5, «С», «Авраам Линкольн») (3,5, «Д», «Рональд Рейган») (3,5, «E», «Джеймс А. Гарфилд») (3,7, «A», «Сиддхарта Гаутама») (3,7, «B», «Иисус Христос») (3,7, «C», «Махатма Ганди») (3,7, «D», «Мухаммед») (3,6, «A», «Род-Айленд») (3,6, «B», «Новый Хэмпшир ") (3,6," C "," Нью-Джерси ") (3,6," D "," Нью-Йорк ") (3,9, «А», «Ислам») (3,9, «В», «Индуизм») (3,9, «С», «Христианство») (3,9, «D», «Буддизм») (3,10, «A», «Река Тибр») (3,10, «B», «The Река Инда ') (3,10,' C ',' Желтая река ') (3,10,' D ',' Нил Река ') (1,1,' A ',' (D) & (E) ') (1,1, "B", "(A) & (B)') (1,1," C ", '(D)') (1,1, «D», «(A)») (1,1, «E», «Ни один из них») (1,2, «A», «- 17») (1,2, «B», «5») (1,2, «C», «3») (1,2, «D», «- 5») (1,2, «E», « Ни один из этих ') (1,3, «A», «1,66») (1,3, «B», «4») (1,3, «C», «2») (1,3, «D», «1 «) (1,3, «E», «Ни один из них») (1,4, «A», «x = 4, y = 1, z = 5») (1,4, «B», «x = -7, y = 1, z = 5 ') (1,4, «C», «x = 3, y = 2, z = 6») (1,4, «D», «x = 4, y = 2, z = 6 ') (1,4, «E», «x = 8, y = 2, z = 1») (1,5, «A», «(C) & (D)» ) (1,5, «B», «(A), (B) и (C)») (1,5, «C», «(A), (B), (C) и (D)») (1,5, «D», «(A) и (B)») (1,5, «E», «Ничего из вышеперечисленного») (1,6, 'A', '\ uffff') (1,6, 'B', '\ u0000') (1,6, 'C', '"" (пробел)') (1,6, «D», «\ u0001») (1,6, «E», «Ничего из вышеперечисленного») (1,7, «A», «23») (1,7, «B», «Ошибка. Невозможно выполнить.») (1,7, «C», «57») (1,7, «D», «11») (1,7, «E», «34») (1,8, «A», «(A), (B) и (C)») (1,8, «B», «(C)» ) (1,8, «C», «(A) и (B)») (1,8, «D», «(A)») (1,8, «E», «(D)») (1,9, «A», «Boolean») (1,9, «B», «Int») (1,9, «C», «String») (1,9, «D», «Char») (1,9, «E», «Byte») (1,10, «A», «(A) и (C)») (1,10, «B», «(A) & (B)») (1,10, «C», «(B)») (1,10, «D», «(B) & (D) ) ') (1,10, 'E', '(D)') (1,11, "A", "Целое число" j "не инициализировано.") (1,11, 'B', 'Nothing.') (1,11, 'C', 'Вы не можете объявить целое число i внутри объявление цикла for. ') (1,11,' D ',' Синтаксис "если" оператор неверен. ') (1,11,' E ',' Вы не можете печатать целочисленные значения без преобразования их в строки. ') (1,12,' A ',' Скомпилирует и запустит успешно ') (1,12,' B ',' Ошибка. ClassA не определяет отсутствие аргумента constructor ') (1,12,' C ',' Ошибка. В конструкторе нет кода ClassA (int x) ') (1,12,' D ',' Ошибка. ClassB не определяет конструктор без аргументов ') (1,12,' E ',' Ошибка. В класс ClassB ') (1,13,' A ',' (C) & (E) ') (1,13,' B ',' (B), (C) & (D) ') (1,13, «C», «(A), (C) и (E)») (1,13, «D», «Все это») (1,13, «E», «Ни один из них».) (1,14, «A», «private») (1,14, «B», «public») (1,14, «C», «защищенный») (1,14, «D», «частный ИЛИ защищенный») (1,14, «E», «Все вышеперечисленное») (1,15, «A», (C), (D) и (E) ') (1,15, «B», «(D)») (1,15, «C», (A), (D) и (E) ') (1,15, «D», «(D ) & (E) ') (1,15, 'E', '(A)')

===== данные пользователей ====

(1, '1 @ gmail.com', '', 'Джордж', 'Рональда', '', '', 'Атланта', 'GA', '30303') (2, '2 @ gmail.com', '', 'Mary', 'Erikson', '', '', 'San Diego', 'CA', '91901') (3, '3 @ gmail.com', '', 'Джон', 'Вашингтон', '', '', 'Атланта', 'GA', '30314')

==== регистрирует данные =====

(1,1, to_date ('2012/02/15 10:00:00', 'гггг / мм / дд hh24: mi: ss '), to_date (' 2012/02/22 10:00:00 ',' гггг / мм / дд hh24: mi: ss ') (2,1, to_date ('2012/02/15 10:00:00', 'гггг / мм / ддhh24: mi: ss '), to_date (' 2012/02/22 10:00:00 ',' гггг / мм / дд hh24: mi: ss ') (3,1, to_date (' 2012/02/17 10: 00: 00 ',' гггг / мм / дд чч24: ми: сс '), дата_даты (' 2012/02/24 10:00:00 ',' гггг / мм / дд чч24: ми: сс ') (1, 3, to_date ('2012/02/17 10:00:00', 'гггг / мм / дд чч24: ми: сс'), to_date ('2012/02/24 10:00:00', 'гггг /mm / dd hh24: mi: ss ') (2,3, to_date (' 2012/02/20 10:00:00 ',' гггг / mm / dh hh24: mi: ss '), to_date (' 2012/02/ 27 10:00:00 ',' гггг / мм / дд чч24: ми: сс ') (3,3, до_даты (' 2012/02/20 10:00:00 ',' гггг / мм / дд чч24:mi: ss '), to_date (' 2012/02/27 10:00:00 ',' гггг / мм / дд чч24: ми: сс ')

=== userResponse data ====

(1,1,1, «A») (1,1,2, «B») (1,1,3, «A») (1,1,4, «B») (1,1,5, «N») (1,1,6, «C») (1,1,7, «D») (1,1,8, «A») (1,1,9,«B») (1,1,10, «B») (1,1,11, «A») (1,1,12, «B») (1,1,13, «A») (1, 1,14, «A») (1,1,15, «A»)

(2,1,1, «B») (2,1,2, «B») (2, 1,3, «E») (2,1,4, «C») (2,1,5, «D») (2,1,6, «A») (2,1,7, 'C ') (2,1,8, «B») (2,1,9, «B») (2,1,10, «A») (2,1,11, «A») (2,1,12, «B») (2,1,13, «B») (2,1,14, «A») (2,1,15, «A»)

(3,1,1, 'C') (3,1,2, «C») (3,1,3, «D») (3,1,4, «D») (3,1,5, «A») (3,1,6, «A») (3,1,7, «D») (3,1,8, «D») (3,1,9, «A») (3,1,10, «A») (3,1,11,«B») (3,1,12, «B») (3,1,13, «A») (3,1,14, «A») (3,1,15, «C»)

(1,3,1, «N») (1,3,2, «A») (1,3,3, «A») (1,3,4, «B») (1, 3,5, «B») (1,3,6, «C») (1,3,7, «D») (1,3,8, «A») (1,3,9, 'A ') (1,3,10, «B»)

(2,3,1, «B») (2,3,2, «C») (2,3,3,'A ') (2,3,4, «C») (2,3,5, «B») (2,3,6, «D») (2,3,7, «D») (2,3,8, «D») (2,3,9, «A») (2,3,10, «A»)

(3,3,1, «B») (3,3,2, «A») (3,3,3, «A») (3,3,4, «B») (3,3,5, «B») (3,3,6, «C»') (3,3,7, «D») (3,3,8, «A») (3,3,9, «A») (3,3,10, «B»)

Ответы [ 3 ]

3 голосов
/ 12 марта 2012

Тогда звучит так, как будто вы хотите сделать внешнее соединение

select ur.uno, count(q.eno)*5
  from userresponse ur
       left outer join question q
         on(    ur.eno = q.eno 
            and q.correctanswer = ur.response 
            and q.qno = ur.qno 
            and q.eno = '1')
where ur.uno = '1' 
group by ur.uno

Это вернет строку для каждой строки в userresponse с uno из '1' с count(*) из 0, если в question.

нет подходящих строк.
0 голосов
/ 05 апреля 2013

когда оператор И реализует с другим значением в одном столбце оператор равенства .......

0 голосов
/ 12 марта 2012

Попробуйте выше запрос с функцией ISNULL:

select ur.uno, NVL(count(*)*5,0)
from userresponse ur, question q
where ur.eno = q.eno 
and q.correctanswer = ur.response 
and q.qno = ur.qno 
and ur.uno = '1' 
and q.eno = '1'
group by ur.uno
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...