你可以joinTable2
到Table1
多次,一次爲每個列:
SELECT Table1.id,
Table1.name,
Table2_t1.cname AS t1cname,
Table2_t1.cname AS t2cname,
Table2_L1.cname AS L1cname,
Table2_L2.cname AS L2cname,
Table2_L3.cname AS L3cname,
Table2_L4.cname AS L4cname,
Table2_L5.cname AS L5cname,
Table2_L6.cname AS L6cname,
Table2_L7.cname AS L7cname,
Table2_L8.cname AS L8cname,
Table2_L9.cname AS L9cname,
Table2_L10.cname AS L10cname
FROM Table1
JOIN Table2 AS Table2_t1 ON Table2_t1.cid = Table1.t1cid
JOIN Table2 AS Table2_t2 ON Table2_t2.cid = Table1.t2cid
JOIN Table2 AS Table2_L1 ON Table2_L1.cid = Table1.L1cid
JOIN Table2 AS Table2_L2 ON Table2_L2.cid = Table1.L2cid
JOIN Table2 AS Table2_L3 ON Table2_L3.cid = Table1.L3cid
JOIN Table2 AS Table2_L4 ON Table2_L4.cid = Table1.L4cid
JOIN Table2 AS Table2_L5 ON Table2_L5.cid = Table1.L5cid
JOIN Table2 AS Table2_L6 ON Table2_L6.cid = Table1.L6cid
JOIN Table2 AS Table2_L7 ON Table2_L7.cid = Table1.L7cid
JOIN Table2 AS Table2_L8 ON Table2_L8.cid = Table1.L8cid
JOIN Table2 AS Table2_L9 ON Table2_L9.cid = Table1.L9cid
JOIN Table2 AS Table2_L10 ON Table2_L10.cid = Table1.L10cid
WHERE Table1.active = 1
,或者,你可以加入表一次,然後組的結果:
SELECT Table1.id,
Table1.name,
MAX(IF(Table1.t1cid =Table2.cid, Table2.cname, NULL)) AS t1cname,
MAX(IF(Table1.t2cid =Table2.cid, Table2.cname, NULL)) AS t2cname,
MAX(IF(Table1.L1cid =Table2.cid, Table2.cname, NULL)) AS L1cname,
MAX(IF(Table1.L2cid =Table2.cid, Table2.cname, NULL)) AS L2cname,
MAX(IF(Table1.L3cid =Table2.cid, Table2.cname, NULL)) AS L3cname,
MAX(IF(Table1.L4cid =Table2.cid, Table2.cname, NULL)) AS L4cname,
MAX(IF(Table1.L5cid =Table2.cid, Table2.cname, NULL)) AS L5cname,
MAX(IF(Table1.L6cid =Table2.cid, Table2.cname, NULL)) AS L6cname,
MAX(IF(Table1.L7cid =Table2.cid, Table2.cname, NULL)) AS L7cname,
MAX(IF(Table1.L8cid =Table2.cid, Table2.cname, NULL)) AS L8cname,
MAX(IF(Table1.L9cid =Table2.cid, Table2.cname, NULL)) AS L9cname,
MAX(IF(Table1.L10cid=Table2.cid, Table2.cname, NULL)) AS L10cname
FROM Table1 JOIN Table2 ON Table2.cid IN (
Table1.t1cid,
Table1.t2cid,
Table1.L1cid,
Table1.L2cid,
Table1.L3cid,
Table1.L4cid,
Table1.L5cid,
Table1.L6cid,
Table1.L7cid,
Table1.L8cid,
Table1.L9cid,
Table1.L10cid
)
WHERE Table1.active = 1
GROUP BY Table1.id
我認爲第一個解決方案應該是更快,特別是如果你有索引Table2.cid
和外鍵列Table1
—,但也許有必要對兩種方法進行基準比較,看看哪個更好?
你能告訴我們兩個表能夠合併的規則嗎? –
瞭解[SQL連接](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)。 – eggyal