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

相關問題