Статический SQL-запрос заменить на динамический столбец - PullRequest
0 голосов
/ 16 октября 2018

У меня следующий запрос:

http://www.sqlfiddle.com/#!9/752e34/3

Этот запрос использует SELECT в запросах SELECT.

"SELECT a.*

,(SELECT s.value FROM tbl_scd AS s WHERE s.tag_id = 1 AND s.main_id = a.id ORDER BY s.date_time DESC LIMIT 1) AS title

,(SELECT s.value FROM tbl_scd AS s WHERE s.tag_id = 2 AND s.main_id = a.id ORDER BY s.date_time DESC LIMIT 1) AS alt

FROM tbl_main AS a WHERE 1; "

Сейчас я ищу решение добавить новую строку в tbl_tag безизмените приведенный выше запрос (чтобы SELECT в части SELECT был динамическим), чтобы получить ссылку на tbl_tag

Чтобы получить это:

+----+---------------+-----------+-----------+--------------+
| id |     date      |    title  |     alt   |   new_column |
+----+---------------+-----------+-----------+--------------+
|  1 |    2018-10-10 |   test1-1 |   test1-3 |   NULL       |
|  2 |    2018-10-11 |   test2-1 |   test2-1 |   NULL       |
+----+---------------+-----------+-----------+--------------+

Было бы здорово получить представлениеили помочьСпасибо

1 Ответ

0 голосов
/ 17 октября 2018

Ваш последний комментарий на ваш вопрос об использовании JOIN проясняет мне (я думаю), что вы ищете.JOIN s определенно вам здесь очень поможет, вместо довольно громоздкого запроса, который вы сейчас используете.

Попробуйте:

SELECT
  tbl_main.date,
  tblA.value AS title,
  tblB.value AS alt
FROM
  tbl_main
  INNER JOIN (SELECT main_id, tag_id, value
                FROM tbl_scd
               INNER JOIN tbl_tag ON (tbl_scd.tag_id = tbl_tag.id)
               WHERE tbl_tag.name = 'title') tblA
  ON (tbl_main.id = tblA.main_id)
  INNER JOIN (SELECT main_id, tag_id, value
                FROM tbl_scd
               INNER JOIN tbl_tag ON (tbl_scd.tag_id = tbl_tag.id)
               WHERE tbl_tag.name = 'alt') tblB
   ON (tbl_main.id = tblB.main_id);

Я думаю, это поможет вам стать ближек общему решению того, на что, похоже, вы пытаетесь достичь, или, по крайней мере, укажете правильное направление с помощью JOIN s.

Я также думаю, что вы могли бы выиграть от переосмысления дизайна вашей базы данныхпотому что этот вид поворота строк из одной таблицы в столбцы в выходных данных запроса может быть индикатором того, что данные могут быть лучше структурированы по-разному.

В любом случае, я надеюсь, это поможет.

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