Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 行上有JSON值的左联接表?_Mysql_Json - Fatal编程技术网

Mysql 行上有JSON值的左联接表?

Mysql 行上有JSON值的左联接表?,mysql,json,Mysql,Json,这一个很难,我有两个表需要在特定的行上连接,问题是第一个表行是json值 这是表项中的json行 [{"id":"15","value":"News Title"},{"id":"47","value":"image1.jpg"},{"id":"33","value":"$30"}] 这是我需要在json ID上加入的表属性,并获得实际的属性名,如Title、Image、Price id Name 15 Title 47 Image 33 Price

这一个很难,我有两个表需要在特定的行上连接,问题是第一个表行是json值

这是表项中的json行

[{"id":"15","value":"News Title"},{"id":"47","value":"image1.jpg"},{"id":"33","value":"$30"}]
这是我需要在json ID上加入的表属性,并获得实际的属性名,如Title、Image、Price

id      Name
15      Title
47      Image
33      Price
所以开始是

SELECT item_values FROM ujm_items 
LEFT JOIN?????
 WHERE category = 8 AND published = 1 ORDER BY created DESC
但是在json上留下了连接,没有任何线索。
感谢您的帮助

。。。这就是为什么不在单个SQL字段中存储结构化数据的原因。它否定了关系数据库的全部用途

除非您有一个包含JSON解析器的DB,否则您有两个选项:

a) 查找/提取特定密钥/值对的不可靠字符串操作

b) 将json读入一个客户端,该客户端可以解析回本机,提取所需的键/值,然后使用其他ID字段进行实际连接

SELECT ...
LEFT JOIN ON SUBSTR(jsonfield, POSITION('"id:"', jsonfield)) etc...
无论哪种方式,它都会彻底破坏性能,因为您不能对这些计算/导出的值使用索引

请注意,这不会按原样工作-它只是为了证明这是多么的丑陋


修复您的表-规范化设计,不存储需要从中提取数据的JSON数据。在json字符串中放入一个json字符串是一回事,您只会在它的整个页面中获取/更新它。有一个需要在其子值上加入的子值是完全不同的。

我很确定,由于数据的存储方式,这是不可能的。可以进行一些字符串匹配,但速度会很慢。我想是的,谢谢youthnx的输入,但老实说,我不知道为什么从一开始大家就认为我们实际上是这样制作表的。这是我参与的一个客户项目,我个人永远不会做出这样的结构。因为它总是这样产生的。最好的办法是说“这是我客户的垃圾——他们是白痴,我会设计得更好”。我们都不得不面对这个问题。