在同一张桌子上左联接11次

时间:2018-11-21 19:19:07

标签: mysql sql node.js

我具有以下数据结构。

from flask import Flask, request, jsonify
import requests. jsonify

badpackets = "0"

@app.route('/badpkts/<string:badpackets>', methods=['PUT'])
def post_bad_packets(badpackets):
    badpackets = request.jsonify
    return jsonify(badpackets)
@app.route('/badpkts/', methods=['GET'])
def get_bad_packets():
    return jsonify(badpackets)

我希望创建一个如下所示的结果列表,即将同一封电子邮件,不同类型的日期合并为一行。

id| email       |  date      |  type  |  data1  |  data2 |  data3  
1 | xxx@xxx.com | 2018-11-22 |  a     |  xxx    |  xxx   |  xxx  
2 | xxx@xxx.com | 2018-11-22 |  b     |  xxx    |  xxx   |  xxx  
3 | xxx@xxx.com | 2018-11-22 |  c     |  xxx    |  xxx   |  xxx  
4 | xxx@xxx.com | 2018-11-23 |  a     |  xxx    |  xxx   |  xxx  
5 | xxx@xxx.com | 2018-11-23 |  b     |  xxx    |  xxx   |  xxx  
6 | xxx@xxx.com | 2018-11-23 |  c     |  xxx    |  xxx   |  xxx  
7 | yyy@yyy.com | 2018-11-22 |  a     |  xxx    |  xxx   |  xxx  
8 | yyy@yyy.com | 2018-11-22 |  b     |  xxx    |  xxx   |  xxx

我尝试了以下方法,但是由于11种类型(所以我退出连接11次...)并且每种类型分别具有10-30个数据,因此加载时间超长。

email       |  date      |  a-data1  |  a-data2 |  a-data3 |  b-data1 | ....  
xxx@xxx.com | 2018-11-22 |  xxx      |  xxx     |  xxx     |  xxx     | ....
xxx@xxx.com | 2018-11-23 |  xxx      |  xxx     |  xxx     |  xxx     | ....  
yyy@yyy.com | 2018-11-22 |  xxx      |  xxx     |  xxx     |  xxx     | ....  

什么是有效生成列表的好方法?

已编辑 通过以下方式解决

        SELECT DISTINCT t_0.email, t_0.date, 
        t_a.data1 AS ta_data1, t_a.data2 AS ta_data2 , ... , t_k.data30 AS tk_data30 
        FROM TABLE AS t_0
        LEFT JOIN mytable AS t_a
        ON ( t_0.email = t_a.email AND t_0.date = t_a.date )
        LEFT JOIN mytable AS t_b
        ON ( t_0.email = t_b.email AND t_0.date = t_b.date )
    ...
        LEFT JOIN mytable AS t_k
        ON ( t_0.email = t_k.email AND t_0.date = t_k.date )

0 个答案:

没有答案