/ / jaka powinna być relacja między obiema tabelami, aby każdy uczeń mógł mieć oddzielne markid - sql

jaka powinna być relacja między obu tabelami, aby każdy uczeń mógł mieć oddzielne marksid - sql

Jestem nowy w sql Najpierw mam 2 stołyoceny i drugi ze studentami. znaki mają podstawowy klucz markid, a uczniowie mają klucz podstawowy id studenta. Chcę wiedzieć, jaka powinna być relacja między obiema tabelami, aby każdy uczeń mógł mieć osobny znacznik. i jakie będzie zapytanie SQL, aby uzyskać ich dane.

Próbowałem relacji jeden do jednego z tym zapytaniem s = "wybierz s.Student Name, z.Hourly1Marks from Student s, marks z" ale pokazuje kartezjański produkt wpisów.

Odpowiedzi:

0 dla odpowiedzi № 1

Przestudiuj pojęcie ŁĄCZENIA WEWNĘTRZNEGO (jeśli każdy uczeń ma jedną ocenę, tj. Relację 1: 1) i LEWE DOŁĄCZ (jeśli każdy uczeń może mieć wiele ocen, tj. Relacja 1: n).

Użyłeś złączenia wewnętrznego bez ograniczeń. Potrzebujesz czegoś takiego

SELECT S.name, Z.marks
FROM students S
JOIN marks Z ON S.student_id = Z.student_id

lub równoważnie

SELECT S.name, Z.marks
FROM students S, marks Z
WHERE S.student_id = Z.student_id

w przypadku relacji 1: 1 lub

SELECT S.name, Z.marks
FROM students S
LEFT JOIN marks Z ON S.student_id = Z.student_id

dla przypadku relacji 1: N.


0 dla odpowiedzi nr 2

Załóżmy, że masz dwie tabele:

Students
--------------
IDStudent
Name
....

Marks
--------------
IDMarks
Hourly1Marks

a relacja między Studend a Markami jest następująca: „Uczeń może mieć 0 lub więcej Marków”, wtedy musisz dodać kolumnę w tabeli Marks - nazwij to studentID i ta kolumna jest używana jako klucz obcy dla tabeli ucznia.

wtedy możesz napisać to zapytanie

select s.Name, z.Hourly1Marks
from Student s left join marks z
on z.studentID = s.IDStudent

które zwrócą ci wszystkich uczniów i ich oceny (także ucznia bez żadnych ocen) lub, jeśli chcesz tylko studentów z co najmniej jednym znakiem

select s.Name, z.Hourly1Marks
from Student s inner join marks z
on z.studentID = s.IDStudent