Mysql 带3个表的限额/订单结果

Mysql 带3个表的限额/订单结果,mysql,laravel,eloquent,foreign-keys,left-join,Mysql,Laravel,Eloquent,Foreign Keys,Left Join,所以我试图将子查询的结果限制为每行一个 Tables: Companies: id Events: id, title, date Relations: local_id, foreign_id select `companies`.*, `e`.`title` from `companies` left join ( select `events`.*, `relations`.`local_id` as `pivot_local_id`, `

所以我试图将子查询的结果限制为每行一个

    Tables:    
    Companies: id
    Events: id, title, date
    Relations: local_id, foreign_id

select `companies`.*, `e`.`title` 
from `companies` 
left join (
  select `events`.*, `relations`.`local_id` as `pivot_local_id`, `relations`.`foreign_id` as `pivot_foreign_id` 
    from `events` inner join `relations` on `events`.`id` = `relations`.`foreign_id` 
    where `relations`.`local_id` = companies.id 
    order by `date` desc limit 1 
) e on e.pivot_local_id = companies.id
该Q返回“#1054-where子句中的未知列‘companys.id’”

最后,我想为每个公司获取company.*和“最新活动标题”(如果有)


为了使事情进一步复杂化,我想知道是否可以用Laravel 5.3的雄辩ORM实现这一点。

表公司不可见/可用是子查询,因此您有一个错误,即主查询中存在的事实是不够的

然后您必须在子查询中加入表companys,例如(我不知道子查询是否适合您的范围)

因此,这是已清理的(不正确)查询:

SELECT c.*, e.title
FROM companies c
LEFT JOIN (
SELECT ev.*, r.local_id AS pivot_local_id, r.foreign_id AS pivot_foreign_id
FROM events ev
INNER JOIN relations r on ev.id = r.foreign_id
WHERE r.local_id = c.id 
ORDER BY `date` DESC LIMIT 1 
) e ON e.pivot_local_id = c.id;
这(希望)应该是您打算实现的:

SELECT c.*, ev.title
FROM companies c
LEFT JOIN relations r ON c.id = r.local_id
LEFT JOIN events ev on ev.id = r.foreign_id
WHERE ev.title IS NOT NULL
ORDER BY `date` DESC LIMIT 1;
注意:您可能不需要ev.title不为NULL的
,您应该将
日期
与表别名关联


祝你好运

似乎您的公司表中没有第列organization\u id,可能只是id?您好。不。它不应该在那里。免职。如果答案回答了您的问题,您应该选择一个答案,如果您仍然有问题,则应提供更多详细信息。。。
SELECT c.*, ev.title
FROM companies c
LEFT JOIN relations r ON c.id = r.local_id
LEFT JOIN events ev on ev.id = r.foreign_id
WHERE ev.title IS NOT NULL
ORDER BY `date` DESC LIMIT 1;