我为我正在处理的应用程序创建了一个连接。
SELECT community.id,
community.name,
property.type,
property.lowest_price,
property.highest_price,
property.commission_rate,
property.fixed_bonus
FROM community,
property
WHERE community.zip IN ($zips)
AND property.community_id = community.id
我希望选择一个需要遵循三个关系的附加值,并且不确定最佳方法。
我想要的价值是builder_group.name
社区表格community.user_id
与构建器表builder.user_id
构建器表格还有builder.builder_group_id
,与builder_group
表的builder_group.id
builder_group
表最终具有我想要选择的值builder_group.name
此外,为分页目的返回计数的最佳方法是什么。最好是在最初没有返回列并在PHP级别传递它,或者可以使用SELECT返回而没有显着的开销吗?
答案 0 :(得分:2)
如果切换到明确的JOIN条件,事情会变得更加清晰:
SELECT community.id, community.name,
property.type, property.lowest_price, property.highest_price, property.commission_rate, property.fixed_bonus,
builder_group.name
FROM community
JOIN property on property.community_id = community.id
JOIN builder on builder.user_id = community.user_id
JOIN builder_group on builder_group.id = builder.builder_group_id
WHERE community.zip IN ($zips)
如果您担心所有这些JOIN都很慢,那么请查看连接条件中涉及的列的索引(使用显式JOIN的另一个原因)并对查询进行概要分析。
就您的分页问题而言,您可能希望了解FOUND_ROWS()
函数。
答案 1 :(得分:0)
SELECT community.id,
community.name,
property.type,
property.lowest_price,
property.highest_price,
property.commission_rate,
property.fixed_bonus,builder_group.name
FROM community
JOIN property ON property.community_id = community.id
JOIN builder ON builder.user_id = community.user_id
JOIN builder_group.id ON builder_group.id = builder.builder_group_id
WHERE community.zip IN ($zips)