我有兩張桌子、轉會桌和俱樂部桌。
這是表傳輸:
id | 名字 | 姓氏 | 來自俱樂部 | 去俱樂部 | 價格 | 來自backnumber | 返回號碼 |
---|---|---|---|---|---|---|---|
0 | 範例1 | 範例2 | EX3 | EX4 | 範例5 | 範例6 | 範例7 |
這是桌子俱樂部:
id | 縮寫 | #全名 |
---|---|---|
0 | EX3 | 範例3 |
1 | EX4 | 範例4 |
我想從轉帳表中獲取一行,獲取 fromclub,將其與 Clubs 中的縮寫相匹配,從該行獲取全名,並將其添加到回應中。我想對 toclub 專欄做同樣的事情。然後我想對錶傳輸中的每隔一行重複一次。
為了簡單起見,這是我的預期結果:
id | 名字 | 姓氏 | 來自俱樂部 | 去俱樂部 | 價格 | 來自backnumber | 返回號碼 | 來自俱樂部全名 | toclub全名 |
---|---|---|---|---|---|---|---|---|---|
0 | 範例1 | 範例2 | EX3 | EX4 | 範例5 | 範例6 | 範例7 | 範例3 | 範例4 |
我似乎找不到一種方法來建立一個查詢,在不獲得大約 512 行結果的情況下執行此操作,即使我目前只有 8 行結果。
SELECT * FROM transfers, (SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.fromclub) AS fromclubfullname, (SELECT clubs.fullname FROM transfers, clubs WHERE clubs.abbr = transfers.toclub) AS toclubfullname
它會傳回 512 行和兩個欄位(稱為 fullname),而不是一列 fromclubfullname 和 toclubfullname。
P粉8271215582024-04-03 15:15:27
您可以透過左連接
來做到這一點 -
SELECT transfers.*, c1.fullname as fromclubfullname, c2.fullname as toclubfullname FROM `transfers` LEFT JOIN clubs c1 ON (c1.abbr = transfers.fromclub) LEFT JOIN clubs c2 ON (c2.abbr = transfers.toclub)