Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql左连接旋转90°;桌子_Mysql_Sql - Fatal编程技术网

Mysql左连接旋转90°;桌子

Mysql左连接旋转90°;桌子,mysql,sql,Mysql,Sql,我正在尝试创建一个select语句并使用虚拟列,它基于一个具有键值系统的不同表 假设我为所有名为media 媒体是这样的: id | cust_id | filename | hidden 55 2 lorem.jpg 0 但有些客户需要额外的行,因此我有第二个表,其中包含: media_id | cust_id | rowname | value 55 2 author John Doe 55 2 r

我正在尝试创建一个select语句并使用虚拟列,它基于一个具有键值系统的不同表

假设我为所有名为
media

媒体是这样的:

id | cust_id | filename | hidden
55   2         lorem.jpg  0
但有些客户需要额外的行,因此我有第二个表,其中包含:

media_id | cust_id | rowname | value
55         2         author    John Doe
55         2         release   2015-10-10
55         2         price     42
我想重新创建一个表,在其中可以搜索这些虚拟值 像

这怎么可能?我是否缺少了一些方便的替代方法,可以为不同的用户使用一个公共主表来创建不同的行


我希望避免将JSON数据存储在一列中,因为在sql中很难选择数据,但这是我目前唯一的解决方案(在app/web中选择所有行并解析行)

Magic Join!我喜欢它。MySQL的下一版本必须具备此功能。:-)

同时,你要做的是

SELECT m.id, 
       m.cust_id,
       a.value   AS author,
       r.value   AS release,
       p.value   AS price, 
       m.filename,
       m.hidden
  FROM media m
  LEFT JOIN other_table a ON m.id = a.id AND a.rowname = 'author'
  LEFT JOIN other_table p ON m.id = p.id AND p.rowname = 'price'
  LEFT JOIN other_table r ON m.id = r.id AND r.rowname = 'release'
other_表
(您可以称之为
attributes
表或
metadata
表)中的每个不同属性使用左联接,即使在某些原始行没有某些元数据项的情况下,也可以使查询工作

然后,如果需要对其中一些项进行筛选或排序,可以将此查询包装在外部查询中。比如说

 SELECT *
   FROM (
     SELECT m.id, 
            m.cust_id,
            a.value   AS author,
            r.value   AS release,
            p.value   AS price, 
            m.filename,
            m.hidden
       FROM media m
       LEFT JOIN other_table a ON m.id = a.id AND a.rowname = 'author'
       LEFT JOIN other_table p ON m.id = p.id AND p.rowname = 'price'
       LEFT JOIN other_table r ON m.id = r.id AND r.rowname = 'release'
    ) all
 WHERE release >= '2010-01-01'
 ORDER BY author

值得一提的是,WordPress使用此策略在其
wp\u Posteta
表中存储任意信息。

如果wp使用此策略,那么我可能对相同的元数据存储系统是正确的!谢谢你的信息
 SELECT *
   FROM (
     SELECT m.id, 
            m.cust_id,
            a.value   AS author,
            r.value   AS release,
            p.value   AS price, 
            m.filename,
            m.hidden
       FROM media m
       LEFT JOIN other_table a ON m.id = a.id AND a.rowname = 'author'
       LEFT JOIN other_table p ON m.id = p.id AND p.rowname = 'price'
       LEFT JOIN other_table r ON m.id = r.id AND r.rowname = 'release'
    ) all
 WHERE release >= '2010-01-01'
 ORDER BY author