0
我有这些表(简体):MySQL,与同一个表上的字段相关的元组,GROUP BY或SELF JOIN?
Appointment(
INT idAppointment,
DATETIME start,
DATETIME end)
AppointmentInvolved(
INT idAppointment,
INT idInvolved)
Involved(
INT idInvolved,
VARCHAR name,
INT type,
INT idIncident)
Incident(
INT idIncident,
VARCHAR description)
出现了突发事件,可能有几位参与就可以了。每个参与可以有多个任命,并且每个任命可以由多个参与参与。涉及的类型(本例中为principal = 1,secondary = 2)。
鉴于id的约会,我需要知道参与该事件的主体,无论他是否要参加特定的约会。
到目前为止:
SELECT(*)
FROM Appointments a
INNER JOIN (AppointmentInvolved ai) ON ai.idAppointment = a.idAppointment,
INNER JOIN (Involved i) ON i.idInvolved = ai.idInvolved,
INNER JOIN (Incident in) ON i.idIncident = in.idIncident,
WHERE a.idAppointment = <WHATEV>
WHERE in.type=1
,除非涉及到的主要是要参加这一任命显然是行不通的。 那是一种自我加入吗?我并不需要Incident表,因为可以直接通过idInvolved关联相关人员。
谢谢!
如果我需要更多的预约领域,该怎么办?我如何选择它们并仍然使WHERE IN语句正常工作? – manutenfruits 2012-08-10 07:12:13
您将需要使用您的初始SELECT语句,但用我的答案中的WHERE子句替换。 – 2012-08-10 12:34:35