SELECT 1.lastname, 2.marks
FROM 1
JOIN 2 ON 2.number = 1.number
WHERE NOT EXISTS ( SELECT * FROM 2 WHERE 2.marks<>5 AND 2.number = 1.number)
Проблемка с SQL-запросом
не могу сделать запрос.
у меня есть таблица 1(поля:фамилия,курс,группа,номер) и таблица 2(поля:номер,оценки).мне нужно сформировать запрос так,чтобы выводились фамилии тех студентов, у которых одни 5.
как это сделать?
пожалуйста помогите!!!!!
вот что я пишу:
select 1.фамилия , 2.оценки
from 1, 2
where 2.оценки='55555' ;
но он выводит не так как мне надо!!!
SELECT 1.lastname, 2.marks
FROM 1
LEFT OUTER JOIN 2 ON 2.number = 1.number
WHERE 2.marks='5'
[/highlight]
Оно?
Код:
Скорее так, только надо проверить, возможно во втром запросе надо дать таблице алиас:
Код:
SELECT 1.lastname, 2.marks
FROM 1
JOIN 2 ON 2.number = 1.number
WHERE NOT EXISTS ( SELECT * FROM 22 WHERE 22.marks<>5 AND 22.number = 1.number)
FROM 1
JOIN 2 ON 2.number = 1.number
WHERE NOT EXISTS ( SELECT * FROM 22 WHERE 22.marks<>5 AND 22.number = 1.number)
Код:
SELECT 1.lastname
FROM 1 LEFT JOIN (
SELECT 2.number, COUNT(*) as mark_count, SUM(marks) as marks_sum
FROM 2
GROUP BY number) as tmp ON 1.number = tmp.number
WHERE tmp.mark_count > 0
AND tmp.marks_sum = tmp.mark_count * 5
FROM 1 LEFT JOIN (
SELECT 2.number, COUNT(*) as mark_count, SUM(marks) as marks_sum
FROM 2
GROUP BY number) as tmp ON 1.number = tmp.number
WHERE tmp.mark_count > 0
AND tmp.marks_sum = tmp.mark_count * 5
При условии что 5 - наивысшая оценка.
Код:
select
1.фамилия
from 1, 2
where 1.номер = 2.номер and 2.оценки = '5'
1.фамилия
from 1, 2
where 1.номер = 2.номер and 2.оценки = '5'
или так:
Код:
select
1.фамилия
from 1
join 2 on 2.номер = 1.номер
where 2.оценки = '5'
1.фамилия
from 1
join 2 on 2.номер = 1.номер
where 2.оценки = '5'
from "A" A1
inner join "B" B2
on (A1."nomer" = B2."nomer")
where (B2."ocenka" = 5)
На Оракле не надо?