我有一個很好的想法,只是不能讓我的頭在這附近。內連接 - 使用相同連接的兩個值!
我有一個表(轉移)像下面
id | playerid | old | new | amount
他們都是整數。
我加入這個表(隊)以下
的加入將是對新與舊。
舊的和新的都是整數,我需要團隊表中的名稱。 是否有可能在一個查詢中找出這兩個名字?
感謝
我有一個很好的想法,只是不能讓我的頭在這附近。內連接 - 使用相同連接的兩個值!
我有一個表(轉移)像下面
id | playerid | old | new | amount
他們都是整數。
我加入這個表(隊)以下
的加入將是對新與舊。
舊的和新的都是整數,我需要團隊表中的名稱。 是否有可能在一個查詢中找出這兩個名字?
感謝
是的,它是:
SELECT t.id,
t.playerid,
t_old.name old_team,
t_new.name new_team,
t.amount
FROM transfers t
JOIN teams t_old ON (t_old.id = t.old)
JOIN teams t_new ON (t_new.id = t.new);
注意JOIN
是INNER JOIN
的代名詞。
測試用例:
CREATE TABLE transfers (id int, playerid int, old int, new int, amount int);
CREATE TABLE teams (id int, name varchar(100), founded datetime);
INSERT INTO teams VALUES (1, 'Man Utd', '1900-01-01');
INSERT INTO teams VALUES (2, 'Liverpool', '1890-01-01');
INSERT INTO transfers VALUES (1, 1, 1, 2, 99999999);
結果:
+------+----------+----------+-----------+----------+
| id | playerid | old_team | new_team | amount |
+------+----------+----------+-----------+----------+
| 1 | 1 | Man Utd | Liverpool | 99999999 |
+------+----------+----------+-----------+----------+
1 row in set (0.00 sec)
需要注意的是,如果你有一個紀錄,其中新的比賽的entery老不(或反之亦然)的內連接會不匹配。然後使用外部連接。但在轉讓的情況下,這是沒有意義的。 :)確保新舊不是NULL。
非常感謝,我會實現這一點,並希望給它一個綠色的刻度:) – sark9012 2010-10-30 00:50:01
只讀了你添加的額外。這是完美的。我只是試圖改進,並且知道我應該將團隊作爲ID存儲在一個數據庫中,並在其他地方引用它。 – sark9012 2010-10-30 01:02:46
@Luke:你的表看起來正確定義:) – 2010-10-30 01:04:48