Объединение нескольких таблиц с различным количеством столбцов, упорядоченных по другой таблице, чтобы получить измененное имя столбцов - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь объединить несколько таблиц с разными датами в одну таблицу. Большинство таблиц имеют одинаковые имена столбцов, но в некоторых таблицах этот столбец отсутствует, или их имена были изменены. Эти таблицы имеют общие столбцы, и может быть только один-два столбца с измененным именем, которые необходимо обновить. Я хочу использовать запрос объединения для нескольких таблиц (основанных на именах столбцов), где мы сравниваем имя столбца одной таблицы с другой таблицей (Имена столбцов OLD и New сравниваются в исходной таблице). Пример: несколько таблиц для объединения:

Table_1

|Date          | New Name1 | New Name2 | OLD Name3 | New NameN |

|1/1/2008  | 73.2               | 43.2               | 33.2                | 13.2                |

|1/2/2008  | 13.2               | 23.2               | empty               | 53.2                |

|1/3/2008  | 23.2               | 33.2               | 13.2                | 73.2                |

|X/X/2008 | ………               | …….               | ……..                | ……..                |

Table_2

|Date          | New Name1 | New Name2 | NEW Name3 | OLD Name4  | New NameN |

|1/1/2010  | 12.6               | 13.6               | 23.6                | 13.6                | 13.6              

|1/2/2010  | 14.6               | 33.6               | 14.6                | 53.6                | 17.6                 



|X/X/2010 | ………               | …….               | ……..                | ……..               |                          

Table_3

|Date          | New Name1 | New Name2 | NEW Name3 | NEW Name4 | New NameN |

|1/1/2013  | 12.2               | 19.2               | 24.2                | 17.2                | 14.2 

|1/2/2013  | 24.2               | 23.2               | 15.2                | 43.2                | 17.2                 

|1/3/2013  | empty               | 31.6               | 44.2                | 77.2               | 16.2                 

|X/X/2013 | ………               | …….               | ……..                | ……..               |                       

Table_N

|Date          | New Name1 | New Name2 | NEW Name3 | OLD Name4  | New NameN |

|1/1/2018  | 32.4               | 13.4               | 23.4                | 43.4                | 13.4

|1/2/2018  | 14.4               | 33.4               | 14.4                | 53.4                | 17.4                 

|1/3/2018  | 23.4               | 31.4               | empty               | 77.4                | 16.4                 

|X/X/2018 | ………               | …….               | ……..                | ……..               |    

Исходная таблица: Сравнение имен столбцов

|Name OLD    | Name New   |

|OLD Name1 | NEW Name1 |

|OLD Name2 | NEW Name2 |
|OLD Name3 | NEW Name3 |

|OLD Name4 | NEW Name4 |

|OLD NameN | NEW NameN |

Ожидаемые результаты информации о комбинации из нескольких таблиц MySQL. Столбцы разных таблиц сравниваются - если я могу заставить их совпадать с одинаковыми именами в нескольких таблицах, упорядоченных по исходной таблице (например, OLD Name3 = NEW Name3), столбцы объединяются в объединенную таблицу;столбцы, которых нет в некоторой таблице, помещаются в список столбцов в объединенной таблице. Означает, что новая созданная таблица должна быть объединенным результатом нескольких таблиц на основе имени их столбца, содержащего все данные с одинаковым именем столбца, а результаты получены из имен соответствующих столбцов, которые не имеют одинаковых имен.

Объединенный стол

|Date          | New Name1 | New Name2 | NEW Name3 = | OLD Name4 = | New NameN |

                                  |   OLD Name3   | New Name4    | New NameN |

|1/1/2008  | 73.2          | 43.2               | 33.2                | 13.2      |…………………… |

|1/1/2010  | 12.6          | 13.6               | 23.6                | 13.6      | 13.6     

|1/3/2018  | 23.4               | 31.4               | empty             | 77.4                    


|X/X/2018 | ………               | …….               | ……..                | ……..          |     

1 Ответ

0 голосов
/ 14 октября 2019

В объединении вы можете иметь n столбцов из n таблиц. Но у каждой таблицы должны быть одинаковые столбцы. Вы можете получить желаемый результат, используя псевдоним, если в какой-либо таблице нет нужного столбца, существующего в какой-либо таблице, ивам нужно, затем используйте можете использовать '' в качестве col_name. Вот пример кода

    select * from(
SELECT DATE col1,New Name1 as col2,New Name2 as col3,OLD Name3 as col4,'' as col5,New NameN as col6
from Table_1
UNION
SELECT DATE col1,New Name1 as col2,New Name2 as col3,NEW Name3 as col4,OLD Name4 as col5,New NameN as col6
from Table_2
UNION
SELECT DATE col1,New Name1 as col2,New Name2 as col3,NEW Name3 as col4,OLD Name4 as col5,New NameN as col6
from Table_3
UNION
SELECT DATE col1,New Name1 as col2,New Name2 as col3,NEW Name3 as col4,OLD Name4 as col5,New NameN as col6
from Table_N
) T1
...