如何选择两个表?

use*_*368 1 mysql sql

经过相当多的时间尝试和一些研究后,我终于投降并请求大家帮忙.这就是我的MySQL表格:

表格1:

Parent_ID | ID | Name | Quality |Price
1         | 001|Apple | good    |1.50
1         | 002|Apple | medium  |1.20
1         | 003|Apple | poor    |0.99
2         | 004|Car   | good    |5000.00
2         | 005|Car   | poor    |200.00

表2:

Parent_ID | Var_Name | Value
1         | color    |  red
1         | size     |  big
1         | rating   |  3 Star
2         | color    |  blue
2         | size     |  medium
2         | rating   |  ok

好的.太好了.我现在需要的是一个查询,它给了我:

Parent_ID | ID  | Name  | Quality |   Price | color | size   | rating
1         | 001 | Apple | good    |    1.50 | red   | big    | 3Star
1         | 002 | Apple | medium  |    1.20 | red   | big    | 3Star
1         | 003 | Apple | poor    |    0.99 | red   | big    | 3Star
2         | 004 | Car   | good    | 5000.00 | blue  | medium | ok
2         | 005 | Car   | poor    |  200.00 | blue  | medium | ok

Con*_*rix 5

只需加入table2三次过滤JOIN子句中的var_name.

SELECT t.parent_id, 
       t.id, 
       t.name, 
       t.quality, 
       t.price, 
       c.VALUE AS color, 
       s.VALUE AS size, 
       r.VALUE AS rating 
FROM   table1 t 
       LEFT JOIN table2 c 
         ON t.parent_id = c.parent_id 
            AND c.var_name = 'color' 
       LEFT JOIN table2 s 
         ON t.parent_id = s.parent_id 
            AND s.var_name = 'size' 
       LEFT JOIN table2 r 
         ON t.parent_id = r.parent_id 
            AND r.var_name = 'rating' 
Run Code Online (Sandbox Code Playgroud)