Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You could <a href="http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html" rel="nofollow">join</a> <code>Table2</code> to <code>Table1</code> multiple times, once for each column:</p> <pre><code>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 </code></pre> <p>Or, alternatively, you could join the tables once and then group the results:</p> <pre><code>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 </code></pre> <p>I think the first solution ought to be faster, especially if you have indexes on <code>Table2.cid</code> and the foreign key columns in <code>Table1</code>&mdash;but perhaps it's worth benchmarking the two approaches to see which is better?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload