SQL查询从三个表和一个序列化列中选择数据

时间:2017-11-03 09:48:31

标签: php mysql sql codeigniter

我有三张桌子:

出售

sale_id    buyer    grand_total   payment_status
  42        1         1000        [{"vendor":"3","status":"paid"}] 
  43        1         2000        [{"vendor":"1","status":"paid"}]
  44        1         6000        [{"vendor":"3","status":"paid"}]
  45        2         3000        [{"vendor":"3","status":"paid"}]
  46        8         3000        [{"vendor":"3","status":"paid"}]
  47        8         5000        [{"vendor":"1","status":"paid"}]

用户

user_id                      
  1     
  2
  8

供应商

vendor_id  
  1      
  2         
  3                 
  46                

我想要一个查询,选择从所有特定供应商处购买东西的所有用户。

例如。如何从vendor_id 3购买所有已购买的用户?如果用户进行了多次购买,我如何购买总金额?

2 个答案:

答案 0 :(得分:2)

在MySQL 5.7.9及更高版本中:

SELECT buyer, SUM(grand_total) AS total 
FROM sale 
WHERE payment_status->"$[0].vendor" = 3

Docs

答案 1 :(得分:1)

这样的东西可以工作,虽然如前所述,你应该调整你的表结构,将供应商作为单独的列包括在内:

SELECT * FROM {销售{1}} {PAYMENT_STATUS {1}}

或者如果您的json比这更复杂,您可以使用:

WHERE {销售{1}} {PAYMENT_STATUS {1}}