【发布时间】:2015-03-28 08:18:26
【问题描述】:
我有下表结构。
master table >
m_id, pk
m_name,
p_id, fk
s_id, fk
t_id, fk
x_id fk
p table >
p_id, pk
p_name
s table >
s_id, pk
s_name
t table >
t_id, pk
t_name
x table >
x_id, pk
x_name
我想获取给定 m_id 的 m_id、m_name、p_name、s_name、t_name、x_name。
我在查询中应用内连接
SELECT mt.m_id, mt.m_name, pt.p_name, st.s_name, tt.t_name, xt.x_name
FROM master mt
INNER JOIN p AS pt ON pt.p_id = mt.p_id
INNER JOIN s AS st ON st.s_id = mt.s_id
INNER JOIN t AS tt ON tt.t_id = mt.t_id
INNER JOIN x AS xt ON xt.x_id = mt.x_id
WHERE mt.m_id = 50;
问题:是否有任何其他有效的方法来实现这一点或者我的查询没问题?
谢谢。
【问题讨论】:
-
您的查询没问题。
-
您的查询完全没问题。
-
查询看起来不错。如果您正在寻找性能,您可能会从键上的索引中获益。
-
请注意,您的解决方案假定所有外键列都存在值。
-
@NamanGala,使用左连接,因为连接链中的第一个表是主表!