2011-10-28 19 views
0

我有2个表名为projectstracklines 每个项目可以有多个tracklines。Mysql左加入另一个表与传递变量

我有一个SQL语句,将循环通过我的项目,但我希望能够加入只有1行trackline表。我想要做的是获取作为项目一部分的所有轨迹线,根据不止一个字段对其进行排序,并对其进行限制1,以便我有一条轨道线,我正在与我的项目进行合作。

这是我到目前为止有:

SELECT Project.* FROM `project` AS `Project` 
LEFT JOIN (
    SELECT * 
    FROM `trackline` 
    WHERE `trk_deleted` = '0' 
    ORDER BY `trk_state`, `trk_status` 
    LIMIT 1 
) t ON t.`trk_project` = `prj_id` 
ORDER BY `prj_name` 

的问题是,我没有在我的外部查询获得trk_statetrk_status值。

我在想,我的子查询可能在哪里trk_project = prd_id但我不知道如何实现这一目标。

回答

1

您需要从派生表以及拉值:

SELECT Project.*, t.* 
FROM ... 

现在它仅检索从项目表中的字段。

+0

我忘了提及我已经做到了,即使我的代码没有提供它。我遇到的主要问题是,如果我从连接中删除“LEFT”,则不返回结果集,这意味着没有连接正在完成。我想我用我加入2个表的逻辑出了问题。 – Justin

+0

使它仅仅是一个'JOIN'使它成为一个默认的'INNER JOIN',其中只有在查询两边都有匹配的记录时才会得到结果 - 这意味着您的连接中的ON子句不起作用对。 –

+0

是的,我明白JOINS和LEFT JOINS的区别。如果我在不使用子查询的情况下执行LEFT JOIN,我会得到结果。我猜我正在使用的方法是什么导致连接不起作用。 – Justin