Я хочу создать SQL-ПРОСМОТР, который переформатирует мои данные
Это та таблица, которую я создал. Поскольку порты должны быть уникальными, я помещаю их в один столбец:
MariaDB [admindb]> select * from table_tennant;
+-------+----------+--------------+----------------+
| port | protocol | tennant_name | tennant_domain |
+-------+----------+--------------+----------------+
| 10000 | https | test | test.test.de |
| 10001 | smtp | test | test.test.de |
| 10002 | mgmt | test | test.test.de |
| 10003 | solr | test | test.test.de |
| 10010 | https | test2 | test2.test.de |
| 10011 | smtp | test2 | test2.test.de |
| 10012 | mgmt | test2 | test2.test.de |
| 10013 | solr | test2 | test2.test.de |
+-------+----------+--------------+----------------+
4 строки для каждого tennant должны отображаться как один, например:
+----------------+--------------+------------+-----------+-----------+-----------+
| tennant_domain | tennant_name | https_port | smtp_port | mgmt_port | solr_port |
+----------------+--------------+------------+-----------+-----------+-----------+
| test.test.de | test | 10000 | 10001 | 10002 | 10003 |
+----------------+--------------+------------+-----------+-----------+-----------+
, который работает только дляодин из Теннанта в таблице. Если я вставлю второй, мои операторы SELECT для VIEW возвращают более одного результата, что приводит к ошибке.
MariaDB [admindb]> select * from view_ausgabe;
ERROR 1242 (21000): Subquery returns more than 1 row"
Вот мое определение VIEW
MariaDB [admindb]> CREATE VIEW view_ausgabe AS SELECT tennant_domain, tennant_name,
-> (SELECT port from table_tennant WHERE protocol = 'https' GROUP BY tennant_name AND tennant_domain) AS https_port,
-> (SELECT port from table_tennant WHERE protocol = 'smtp' GROUP BY tennant_name AND tennant_domain) AS smtp_port,
-> (SELECT port from table_tennant WHERE protocol = 'mgmt' GROUP BY tennant_name AND tennant_domain) AS mgmt_port,
-> (SELECT port from table_tennant WHERE protocol = 'solr' GROUP BY tennant_name AND tennant_domain) AS solr_port
-> FROM table_tennant GROUP BY tennant_name;
Как я могу создатьновая строка в ПРОСМОТРЕ для каждого арендатора?
Спасибо за вашу помощь. Андре