根据外表过滤结果

时间:2016-05-10 15:50:19

标签: mysql sql laravel laravel-5 foreign-keys

假设我有4个表:collectionsvenueslocationscities

Collection属于许多Venues,而Venue属于许多Collections

VenueLocation之间存在一对一的关系(通过id字段)

A Location属于City,而City属于Locations

我想要实现的是这种情况:

如果我在id表上有cities条记录,我希望在与{{1}相关联的每个collections中获得所有venuescollectionid表上。

我将如何实现这一目标? 我试图尽可能具体,但如果有些事情仍然模糊不清 我正在使用Laravel。所以,如果您在Eloquent中提供,我将不胜感激,但SQL查询也可以。

2 个答案:

答案 0 :(得分:0)

同步您提供参考的表格的键

SELECT co.anycolumn, v.anycolumn FROM collections co, venues v, cities ci, locations lo WHERE co.id = v.refid AND ci.refid = lo.refid AND lo = 'WantedLoc';

简单逻辑: SELECT - >期望的列值 FROM - >引用了表格 WHERE - >条件

答案 1 :(得分:0)

您可以编写如下所示的标准SQL查询,但我相信有关您的表结构的更多信息需要对您的问题给出完整的答案,尤其是集合和场地之间的多对多连接。

"https://upload.wikimedia.org/wikipedia/commons/c/ce/Andorra_in_Europe_%28zoomed%29.svg"
  

收藏品属于许多场地,场地属于许多收藏品

多对多不是一个好的数据库关系设计模式我建议使用链接表将这些连接分成多个连接,如果可能的话,这也会简化所需的查询。

^编辑Laravel / Eloquent可能会更好地处理这个问题,但根据我的经验,仅仅因为你可以做某事并不意味着你应该这样做,请参阅SQL JOIN many-to-many以获得在sql查询中处理多对多的好方法或Many to Many join Laravel Eloquent可能有帮助。