列ごとに 1 回、複数回参加でき ます。Table2
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
どちらが優れているかを確認するために 2 つのアプローチをベンチマークする価値はあるでしょうか?