我有两个mysql表: housefeatures. 。这是一个房地产网站。

house 具有这种结构:

id | address | ... some other fields

features 具有这种结构:

id | house_id | feature | value

您可以猜到,房屋可以具有多个功能,因此存在1:n关系。

现在,我正在为房屋实施搜索表。我需要根据用户选择的功能过滤结果。

样本场景:获取具有功能的所有房屋 garagegarden, ,以及这些房屋中的功能清单。

最适合我需求的最佳查询是什么?我不熟悉加入操作,所以我需要您的帮助!

(可选)如果您可以提供特定于YII框架的解决方案,它将很棒:)

有帮助吗?

解决方案

SELECT * 
FROM HOUSE H JOIN FEATURES F ON H.HOUSE_ID = F.HOUSE_ID
WHERE FEATURE IN ('GARDEN','GARAGE');

其他提示

如果你需要 只要 来自 房屋桌:

从iD中的房屋中选择 *(从功能中的功能中选择ID(“花园”,“车库”));

如果您需要全部详细信息:

从HOUSE H中选择 * H.house_id = f.house_id的功能F。

如果您使用YII,则无需手动加入它。

如果使用mySQL(超过sqlite),并且使用InnoDB表(在Myisam表上),则更容易。

您需要从功能(house_id列)到房屋(house_id列)创建外键

如果您使用GII构建模型,那么它将为您自动创建“关系”功能。

然后,在YII中,您将调用House->功能以获取一系列功能行。

您可以在fill()调用中传递CDBCRITERIA对象,以过滤用户选择的房屋。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top