2011-04-18 76 views
0

我想构建一个查询以返回登录用户的项目ID列表,将最近的到最近的排序?按另一个表中的日期戳记对MySQL查询进行排序

我有2个MySQL表:

  • 表 'project_access' 包含 'PROJECT_ID' and'member_id”,其附接到用户对每个项目的ID。
  • 表'项目'包含一个匹配的'project_id'和关于项目的所有细节,包括'更新'是一个日期戳。

这是我到目前为止有:

SELECT project_id FROM project_access WHERE member_id='" . $_SESSION["myid"] . "' ORDER BY updated DESC" 

“更新”实际上是在其他表。我如何将这个写入查询?

感谢

回答

1

您使用JOIN子句,如下所示:

SELECT projects.project_id, projects.updated 
FROM project_access 
INNER JOIN projects 
ON project_access.project_id=projects.project_id 
WHERE project_access.member_id='" . $_SESSION["myid"] . "' 
ORDER BY projects.updated DESC 

注:你应该阅读有关JOIN子句:

http://dev.mysql.com/doc/refman/5.0/en/join.html

..上面的查询可能是取决于你的要求和你的表格结构。

你也应该确保你正确逃生的字符串,SQL语句打交道时,为了避免SQL注入攻击:

http://php.net/manual/en/function.mysql-real-escape-string.php

http://en.wikipedia.org/wiki/SQL_injection

您的代码应阅读:

WHERE project_access.member_id='" . mysql_real_escape_string($_SESSION["myid"]) . "' 

(我假设你在这里使用PHP)。

SQL JOIN教程:

http://www.halfgaar.net/sql-joins-are-easy

http://www.tizag.com/mysqlTutorial/mysqljoins.php

+0

适合像手套。非常感谢您的额外信息! – mradbourne 2011-04-18 22:29:03

1

你以后这将完成。

"SELECT 
    projects.project_id 
FROM project_access 
INNER JOIN projects ON (project_access.project_id = projects.project_id) 
WHERE project_access.member_id='" . $_SESSION["myid"] . "' 
ORDER BY projects.updated DESC" 

我建议你阅读一些基本的查询教程,特别是关于连接。这应该有帮助http://www.sql-tutorial.net/SQL-JOIN.asp

+0

非常感谢。甚至不知道要搜索的术语。链接非常感谢。 – mradbourne 2011-04-18 22:30:38

+0

所有好开心编码错误加入:) – wired00 2011-04-18 22:55:12