我有一個項目表,其中有兩個用戶外鍵(user_id和winner_user_id),一個用於項目所有者,另一個用於項目獲勝者。像SQL,如何查詢表中的多個外鍵?
+----------------+-------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------------------+------+-----+---------+----------------+
| project_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| start_time | datetime | NO | | NULL | |
| end_time | datetime | NO | | NULL | |
| title | varchar(60) | NO | | NULL | |
| description | varchar(1000) | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
| winner_user_id | int(10) unsigned | YES | | NULL | |
| type | enum('fixed','auction') | YES | | NULL | |
| budget | decimal(10,0) | YES | | NULL | |
+----------------+-------------------------+------+-----+---------+----------------+
東西現在我想在一個單一的查詢來獲取關於關於兩個用戶的項目和數據信息。
所以我喜歡制定
SELECT projects.project_id, projects.title, projects.start_time,
projects.description, projects.user_id, projects.winner_user_id,
users.username as owner, users.username as winner
FROM projects,users
WHERE projects.user_id=users.user_id
AND projects.winner_user_id=users.user_id
這顯然會返回一個空集的查詢。真正的問題是我如何引用這些不同的user_id。我甚至嘗試使用AS關鍵字,然後使用我在相同的SQL查詢中創建的名稱,但顯然這不起作用。
爲了使事情變得清楚到底,我想是這樣
+------------+-------------------------------------------------+---------------------+---------+----------------+--------------+--------------+
| project_id | title | start_time | user_id | winner_user_id | owner | winner |
+------------+-------------------------------------------------+---------------------+---------+----------------+--------------+--------------+
| 1 | CSS HTML Tableless expert for site redesign | 2009-09-01 21:07:26 | 1 | 3 | mr X | mr Y |
| 2 | High Quality Ecommerce 3-Page Design HTML & CSS | 2009-09-01 21:10:04 | 1 | 0 | mr X | mr Z |
我如何構建一個查詢來處理呢?
在此先感謝。
非常感謝!我從來沒有真正使用過INNER JOIN語法,但是我發現有趣的是,在USER之後沒有直接指定winnerUser。 – zenna 2009-09-12 17:30:41