SELECT COUNT(Таблица1.Код)
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"
Язык SQL, начало
Код:
При этом, если я использую такой запрос в качестве вложенного:
Код:
SELECT Таблица1.ФИО, Таблица1.Конференция, Таблица4.ВУЗ
FROM Таблица1, Таблица4
WHERE (((Таблица1.ФИО)=[Таблица4].[ФИО]) AND
(((SELECT COUNT(Таблица1.Код)
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"))=2));
FROM Таблица1, Таблица4
WHERE (((Таблица1.ФИО)=[Таблица4].[ФИО]) AND
(((SELECT COUNT(Таблица1.Код)
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"))=2));
то сравнения с числом 2 не происходит (или происходит неверно)
И еще вопрос, если мне необходимо узнать количество записей по всем ФИО из Таблицы1 (см. 1-й запрос), можно ли организовать что-то наподобие цикла, или я не правильно понимаю что-то...
Спасибо.
Код:
SELECT COUNT(Таблица1.Код)
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"
При этом, если я использую такой запрос в качестве вложенного:
Код:
SELECT Таблица1.ФИО, Таблица1.Конференция, Таблица4.ВУЗ
FROM Таблица1, Таблица4
WHERE (((Таблица1.ФИО)=[Таблица4].[ФИО]) AND
(((SELECT COUNT(Таблица1.Код)
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"))=2));
FROM Таблица1, Таблица4
WHERE (((Таблица1.ФИО)=[Таблица4].[ФИО]) AND
(((SELECT COUNT(Таблица1.Код)
FROM Таблица1
WHERE Таблица1.ФИО = "Сидоров"))=2));
то сравнения с числом 2 не происходит (или происходит неверно)
.[/QUOTE]
C Access незнаком но в любом случае в инструкции WHERE должно быть условие поиска вопрос с чем с сравниваеться вложенный запрос?
Цитата: rafaelkyrdan
C Access незнаком но в любом случае в инструкции WHERE должно быть условие поиска вопрос с чем с сравниваеться вложенный запрос?
Вложенный запрос считает кол-во записей с ФИО !"Сидоров" и сравнивается с числом 2
В общем "кажется, что!" GROUP BY не хватает... только вот куда его пихнуть... Смотря что тебе нужно, конференции? Смею предположить:
SELECT Таблица1.ФИО, Таблица1.Конференция, Таблица4.ВУЗ
FROM Таблица1 LEFT JOIN Таблица4 ON ( Таблица1.ФИО=Таблица4.ФИО )
WHERE (SELECT COUNT(Таблица1.Код) FROM Таблица1 WHERE Таблица1.ФИО = "Сидоров") =2
GROUP BY Таблица1.Конференция
;
Если нужно выбрать только те ФИО, которые участвовали в конференциях два раза, условие count(Таблица1.Код) = 2 записывается в предложение having после group by.
Цитата:
Если нужно выбрать только те ФИО, которые участвовали в конференциях два раза, условие count(Таблица1.Код) = 2 записывается в предложение having после group by.
Вот, точно, гениально! HAVING - все никак не мог вспомнить, чего не хватает =)
а в чем проблема вэтом случае:
Цитата:
Млин тут таблицы на кирилице.. аж мозг кипит когда читаешь...
какие еще могут быть таблицы? в бинарном виде (извините, если чушь сказал) ?
Как правило названия таблиц и столбцов идут на лаитнском алфавите (хуже транслитом - лучше в адекватном переводе). Это делается для того чтоб не было проблем с кодировкой в однобайтовых системах кодировки.
Спасибо, учту.
Код:
SELECT Data1.FIO, Data1.Konf, Data4.VUZ
FROM Data1, Data4
WHERE Data1.FIO=Data4.FIO
GROUP BY Data1.FIO
HAVING count(Data1.Valu2) = 2;
FROM Data1, Data4
WHERE Data1.FIO=Data4.FIO
GROUP BY Data1.FIO
HAVING count(Data1.Valu2) = 2;
что-то с синтаксисом не верно, или я в принципе что-то не правильно пишу, но появляется сообщение "Попытка выполнить запрос, который не включает указанное выражене 'Konf', как часть статичтической функции или группы".
обратил внимание, что если в первой строке оставить только Data1.FIO, то запрос работает, причем верно, но мне необходимо, чтобы остальные поля тоже выводились..
В условии группировки должны участвовать все поля, перечисленные в селекте, либо, по полям не участвующим в группировке, должна быть агрегация.