假设我有4个表:collections
,venues
,locations
和cities
。
Collection
属于许多Venues
,而Venue
属于许多Collections
。
Venue
和Location
之间存在一对一的关系(通过id
字段)
A Location
属于City
,而City
属于Locations
。
我想要实现的是这种情况:
如果我在id
表上有cities
条记录,我希望在与{{1}相关联的每个collections
中获得所有venues
和collection
在id
表上。
我将如何实现这一目标? 我试图尽可能具体,但如果有些事情仍然模糊不清 我正在使用Laravel。所以,如果您在Eloquent中提供,我将不胜感激,但SQL查询也可以。
答案 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可能有帮助。