powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не знаю как сделать запрос
5 сообщений из 5, страница 1 из 1
Не знаю как сделать запрос
    #38645626
alion23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база:
Student( Sno ,Sname, Sex, Age, Department)
Course ( Cno , Cname, Pcno, Credit)
SC ( Sno, Cno , Grade)

В таблице Student
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sno          sname                Sex  Age  Department
 001         Adam                   m   21  dept1                
 002         Lili                   f   20  dept2                
 003         Ron                    m   20  dept1                
 004         Shon                   m   22  dept2                
 005         James                  m   23  dept1                
 1002        Mike                   m   19  IS                   
 1003        Liu Gang               m   20  IS                   
 1006        Jone                   m   22  IS                   
    



В таблице Course
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Cno    Cname                                   Pcno   Credit
 01     DataBase                                   06    4
 02     Embedded                                   07    5
 03     Network                                    07    6
 04     Chinese                                    04    4
 05     English                                    05    4
 06     Data Structure                             05    6
 07     Computer Arithmetics                       05    4



И в таблице SC (курсы, которые выбрал студент. есть студент что-то выбрал то в этой таблице есть запись)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sno          Cno  Grade
 001         01    90
 001         02    90
 002         01    92
 002         02    78
 003         03    90
 003         05    85
 1006        01    85
 1006        04    60



Задание на запрос: Показать студентов, которые выбрали точно такие же курсы как и студент, у которого Sno = '001'


Я сейчас вот на чем:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT  *  FROM 
(select cno, student.sname
from sc
full join student
on sc.sno=student.sno
where student.sno='001' ) a 
INNER JOIN (
select cno,student.sname
from sc
full join student
on sc.sno=student.sno ) b    
ON a.cno=b.cno;




Результатом являются и те студенты, которые выбрали хотя бы один из курсов 001го. А нужно точное совпадение.

Вот у меня еще и такой вариант есть, но результаты двух запросов одинаковые:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT distinct Sname
FROM   Student ,sc
WHERE student.sno = sc.sno and Cno  in
                  (SELECT Cno 
                   FROM  sc
                    WHERE sno = '001')



Прошу помочь, кто может!
...
Рейтинг: 0 / 0
Не знаю как сделать запрос
    #38645853
alion23,

задача на реляционное деление. решается через [not] exists подзапросы, либо на group by + having...
...
Рейтинг: 0 / 0
Не знаю как сделать запрос
    #38645867
деление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,
в пж можно ещё собрать курсы в (сортированные) array-и. и джойнится по ним.

хотя я не утверждаю, что так надо делать
...
Рейтинг: 0 / 0
Не знаю как сделать запрос
    #38645993
alion23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

group by и having я почти не понимаю. Результат не правильный - только 001й студент. И с exists так же.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
select sname,cno
from student, sc
where student.sno=sc.sno
group by student.sno, sc.cno
having sc.cno in (SELECT Cno 
                 FROM  sc
                 WHERE sc.sno=student.sno and sno = '001')




Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select student.sname
 from student
 where exists 	(select cno
		from sc
		where sc.sno=student.sno and exists 
		(SELECT Cno 
                 FROM  sc
                 WHERE sc.sno=student.sno and sno = '001'));
...
Рейтинг: 0 / 0
Не знаю как сделать запрос
    #38646006
alion23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
деление,

а как в массив закинуть результат запроса? так можно вообще?))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не знаю как сделать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]