mysql - 如何对两个表进行 SELECT 操作?

标签 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

最佳答案

只需连接到 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' 

关于mysql - 如何对两个表进行 SELECT 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302905/

相关文章:

SQL 错误 : misuse of aggregate

PHP PDO MySQL 不输出结果但加载其余页面?

php - 为什么在 mysql_real_escape_string 中有资源?

mysql - 如何在 mysql 中执行删除级联?提供的示例

php - 在 DateTime 字段中更新为 NULL

sql - postgresql 按组排序

mysql - 如何将数据库行合并在一起?

php - 为 MYSQL 创建最近 30 天的 View

c# - 我无法获取计算机的日期,只能获取时间

sql - 在 SQL 中,UPDATE 总是比 DELETE+INSERT 快吗?