webForumDet fria alternativet

SQL mot mellantabell

3 svar · 538 visningar · startad av Ola_M

Ola_MMedlem sedan sep. 20012 inlägg
#1

Jag har två tabeller teachers och classes. Dessa står i ett många-till-många-förhållande. Dvs varje
lärare kan vara inblandad i flera kurser och en kurs kan ha mer än en lärare. Har därför skapat en
mellantabell: teacherstoclasses. Att då ta reda på vilka lärare som ansvarar för en given kurs är
ju ingen konst. Inte heller att ta reda på vilka kurser en given lärare är inblandad i. Men hur
formulerar jag SQLen om jag vill lista de (om några) lärare som är inblandade i SAMTLIGA kurser.

spangoMedlem sedan juni 20006 147 inlägg
#2

Den här var knepig :)
Om vi antar att primärnyckeln i teacher heter "t_id" och att primärnyckeln i class heter "c_id", och att kolumnerna i kopplingstabellen heter samma sak som det de refererar till (dvs c_id och t_id) så kan det se ut så här:

SELECT * FROM teacher t WHERE NOT EXISTS (
SELECT * FROM class c WHERE NOT EXISTS (
SELECT * FROM teachertoclasses tc WHERE tc.t_id = t.t_id AND c.c_id = tc.c_id
)
);

------------------
God, root, what is difference? /Pitr

Ola_MMedlem sedan sep. 20012 inlägg
#3

Tjusigt! Funkar! Tack!
Efter en stunds intensivt mediterande tycker jag mig till och med förstå varför den funkar.
Fast den känslan är ännu ganska flyktig;-)

spangoMedlem sedan juni 20006 147 inlägg
#4

Hehe... då ska vi inte prata om vilken tid det tog att hitta på den :)

Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb