我有一个SQL查询,几乎是正确的,但如果用户有从返回超过1架飞机,他们最终在结果多行列表数据库:SQL查询返回的结果太多
SELECT a.this_pay,
u.username,
u.user_id,
c.type_id,
c.is_primary,
x.typename,
p.pf_city,
p.pf_state,
n.username AS non_username,
n.user_id AS non_user_id,
n.pf_city AS non_pf_city,
n.pf_state AS non_pf_state
FROM (((((jowner_event_attendees a
LEFT JOIN jowner_users u ON a.user_id = u.user_id)
LEFT JOIN jowner_aircraft c ON a.user_id = c.user_id)
LEFT JOIN jowner_aircraft_types x ON x.id = c.type_id)
LEFT JOIN jowner_profile_fields_data p ON a.user_id = p.user_id)
LEFT JOIN jowner_not_users n ON a.user_id = n.user_id)
WHERE a.event_id = 28 ORDER BY COALESCE(u.username,non_username);
我最终得到一个有多个条目的列表,对于有多架飞机的任何人,我只需要返回1个条目,无论他们在'jowner_aircraft'表中有多少条飞机条目。
我也不希望改变这个查询,因为应用程序的其他部分依赖它,显然它需要我所要求的修订,但请尝试在没有完全重写的情况下回答它。
看到这样的子选择从来就不是好事。这不能被写成一个单一的'SELECT'调用连接? – tadman
我正在从其他人的平庸的代码工作,问题是该应用程序是依赖于此,所以我犹豫是否要改变它太多...如果你能想出一个结构更好的查询,并为我工作,然后发布起来:D – DrCord
如果有多个jowner_aircrafts,应该选择哪个aircraft typename和type_id? – femtoRgon