这是我的数据库结构:
payment option:
mshiptype_id
paymopt_Id
membertopaymentoption:
member_Id
paymopt_Id
mshiptypes
mshiptype_name
mshiptype_id
timetable_id
timetables
timetable_id
timetable_Name
timeslots
timeslot_id
timeslot_name
timeslottotimetables
timeslot_id
timetable_id
我想获得单个成员的mshiptype_name和timeslot_name以及timetable_name
使用上表
任何人都可以在mysql
中提供关于连接查询的建议答案 0 :(得分:1)
我认为这就是你想要的:
SELECT mshiptypes.mshiptype_name, timeslots.timeslot_name, timetables.timetable_Name
FROM membertopaymentoption
INNER JOIN paymentoption ON membertopaymentoption.member_Id=paymentoption.paymopt_Id
INNER JOIN mshiptypes ON paymentoption.mshiptype_id=mshiptypes.mshiptype_id
INNER JOIN timetables ON mshiptypes=timetable_id=timetables.timetable_id
INNER JOIN timesslottotimetables ON timetables.timetable_id=timeslottotimetables.timeslot_id
INNER JOIN timeslots ON timeslottotimetables.timeslot_id=timeslots.timeslot_id
WHERE membertopaymentoption.member_Id=$id
注意:将WHERE子句中的$id
替换为实际的memeber ID
答案 1 :(得分:1)
诀窍是识别两个不同表共有的字段,并尝试找到链接所需字段的路径。
select
mtpo.member_Id,
mt.mshiptype_name,
ts.timeslot_name,
tt.timetable_name
from
payment_option po
left join membertopaymentoption mtpo on po.paymopt_Id = mtpo.paymopt_Id
left join mshiptypes mt on mt.mshiptype_id = po.mshiptype_id
left join timetables tt on tt.timetable_id= mt.timetable_id
left join timeslottotimetables tstt on tstt.timetable_id = tt.timetable_id
left join timeslots ts on ts.timeslot_id = tstt.timeslot_id
where
member_Id = 1 -- change this
另外,我建议在它们来得太晚之前整理你的字段和表格的名称。他们很乱!
答案 2 :(得分:1)
SELECT mshiptype_name, timeslot_name, timetable_name
FROM mshiptypes ST
INNER JOIN paymentoption PO ON ST.mshiptype_id = PO.mshiptype_id
INNER JOIN membertopaymentoption MPO ON PO.paymopt_Id = MPO.paymopt_Id
INNER JOIN timetables TT ON ST.timetable_id = TT.timetable_id
INNER JOIN timeslottotimetables TTT ON TT.timetable_id = TTT.timetable_id
INNER JOIN timeslotss TS ON TTT.timeslot_id = TS.timeslot_id
WHERE MPO.member_id = <members_id>
答案 3 :(得分:1)
select mt. mshiptype_name, ts. timeslot_name, tt. timetable_Name
from membertopaymentoption mtp
inner join payment p on mtp. paymopt_Id = p.paymopt_Id
inner join mshiptypes mt on p.mshiptype_id = m.mshiptype_id
inner join timetables tt on mt.timetable_id = tt. timetable_id
inner join timeslottotimetables tstt on tt timetable_id = tstt. timetable_id
inner join timeslots ts on tstt. timeslot_id = ts. timetable_id
where mtp. member_Id = @memID //will be provided
答案 4 :(得分:0)
select
mshiptype_name,
timeslot_name,
timetable_name
from
paymentoption
natural join membertopaymentoption
natural join mshiptypes
natural join timetables
natural join timeslottotimetables
natural join timeslots
where
member_Id = 1