Как я могу объединить данные из 4 таблиц MySQL - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть 4 таблицы MySQL, которые содержат данные. Каждая таблица имеет одинаковые столбцы, имена и типы, и все, только данные изменяются. Каждая таблица имеет различное количество записей, так как каждая таблица представляет свой год. Итак, таблица на 2015, 201, 2016 и 2018 годы. В таблицах приведены данные о компаниях и деньгах, которые они должны правительственной службе. Таким образом, каждая таблица содержит в основном одни и те же данные с небольшими изменениями (некоторые компании платят). Я хочу создать пятую таблицу, которая объединит эти таблицы с дополнительными столбцами и т. Д. В таблице на 2015 год есть столбец для суммы, которой владеют, и столбец для кода банковского платежа, то же самое для другой таблицы, я хочу, чтобы в пятой таблице были столбцы на все годы для суммы любых кодов оплаты, остальное остается прежним. Как мне сделать что-то подобное? Спасибо.

    CREATE TABLE `2015` (
  `id2015` int(11) NOT NULL AUTO_INCREMENT,
  `eponymia` varchar(200) DEFAULT NULL,
  `afm` varchar(45) DEFAULT NULL,
  `gemi` varchar(45) DEFAULT NULL,
  `nomiki_morfi` varchar(45) DEFAULT NULL,
  `status` varchar(45) DEFAULT NULL,
  `amount` varchar(45) DEFAULT NULL,
  `payment_code` varchar(45) DEFAULT NULL,
  `chamber_reg` varchar(45) DEFAULT NULL,
  `tmima` varchar(45) DEFAULT NULL,
  `dimos` varchar(45) DEFAULT NULL,
  `city` varchar(45) DEFAULT NULL,
  `street` varchar(45) DEFAULT NULL,
  `number` varchar(45) DEFAULT NULL,
  `tk` varchar(45) DEFAULT NULL,
  `phone` varchar(45) DEFAULT NULL,
  `mobile` varchar(45) DEFAULT NULL,
  `fax` varchar(45) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id2015`)
) ENGINE=MyISAM AUTO_INCREMENT=7735 DEFAULT CHARSET=utf8

это схема для одной из таблиц, остальные идентичны и схема для таблицы, которую я хочу заполнить, это

CREATE TABLE `all_years` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `eponymia` varchar(240) DEFAULT NULL,
  `amount_2015` varchar(40) DEFAULT NULL,
  `amount_2016` varchar(40) DEFAULT NULL,
  `amount_2017` varchar(40) DEFAULT NULL,
  `amount_2018` varchar(40) DEFAULT NULL,
  `kodikos_2015` varchar(40) DEFAULT NULL,
  `kodikos_2016` varchar(40) DEFAULT NULL,
  `kodikos_2017` varchar(40) DEFAULT NULL,
  `kodikos_2018` varchar(40) DEFAULT NULL,
  `dimos` varchar(40) DEFAULT NULL,
  `city` varchar(40) DEFAULT NULL,
  `street` varchar(40) DEFAULT NULL,
  `number` varchar(40) DEFAULT NULL,
  `tk` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `all_years_id_uindex` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1686615 DEFAULT CHARSET=utf8

Я хочу, чтобы столбцы "amount_2015" и "kodikos_2015" содержали данные из таблицы 2015 и т. Д. это пример данных

81  "company name"  020587798   2036001000  ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000196546264229    "VAT"   Εμπορικό    ΚΥΠΑΡΙΣΣΙΑΣ / ΜΕΣΣΗΝΙΑΣ ΚΥΠΑΡΙΣΣΙΑ  ΑΡΜΕΝΙΟΙ        24500   2761024466          
82  "company name"  129915690   14689845000 ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000100549364229    "VAT"   Υπηρεσιών   ΛΕΥΚΤΡΟΥ / ΜΕΣΣΗΝΙΑΣ    ΠΥΡΓΟΣ ΛΕΥΚΤΡΟΥ         24024               
83  "company name"  302641263   14690945000 ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000212785864222    "VAT"   Επαγγελματιών   ΦΙΛΙΑΤΡΩΝ / ΜΕΣΣΗΝΙΑΣ   ΦΙΛΙΑΤΡΑ    ΚΕΝΤΡΙΚΗ ΠΛΑΤΕΙΑ        24300               
84  "company name"  800171859   14691745000 ΕΕ  Λύση - Εκκαθάριση   80.00   00200000212787664228    "VAT"   Εμπορικό    ΑΥΛΩΝΑ / ΜΕΣΣΗΝΙΑΣ  ΚΥΠΑΡΙΣΣΙΑ  1 ΧΙΛ ΚΑΛΟΥ ΝΕΡΟΥ - ΤΣΑΚΩΝΑΣ    0   24500               
85  "company name"  110084982   14692445000 ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000212789664228    "VAT"   Μεταποιητικό    ΦΙΛΙΑΤΡΩΝ / ΜΕΣΣΗΝΙΑΣ   ΦΙΛΙΑΤΡΑ            24300   

Также я не совсем уверен, как работает этот сайт, поэтому, если я сделаю что-нибудь глупое, дайте мне немного времени, и я исправлю это.

1 Ответ

0 голосов
/ 01 ноября 2018

Это работа для UNION ALL.

Попробуйте что-нибудь подобное.

    SELECT 2015 AS year, company, owed, payment, paymentcode FROM tbl2015
    UNION ALL
    SELECT 2014 AS year, company, owed, 0 AS payment, '' AS paymentcode FROM tbl2014
    UNION ALL
    SELECT 2013 AS year, company, owed, 0 payment, '' paymentcode FROM tbl2013

Когда вы используете UNION ALL или UNION, каждый из наборов результатов в объединении должен иметь одинаковое количество столбцов. Я написал ... 0 AS payment, '' AS paymentcode ..., чтобы поместить поддельные столбцы в объединенный результирующий набор, где в таблице нет этих столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...