SQL-запрос, чтобы показать этот результат

Мне нужна помощь, чтобы сделать запрос в SQL

Предположим, у меня есть: имя таблицы: зарегистрироваться

    **id_r   |    name    |    text    |**
        1    |    name 1  |    text 1  |
        2    |    name 2  |    text 2  |

и название таблицы: подробности

**id_d    |    id_r    |    text_d    |**
     1    |      1     |     text 1a  |
     2    |      1     |     text 1b  |
     3    |      2     |     text 2a  |

и мне нужен результат как:

**id_r    |    name    |    text    |     text_d_a    |    text_d_b    |**
  1       |   name 1   |    text 1  |     text 1a     |    text 1b     |
  2       |   name 2   |    text 2  |     text 2a

Как я могу сделать заявление SQL, чтобы иметь что-то вроде этого?

2 ответа

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

SELECT t1.*, 
      (SELECT GROUP_CONCAT(t2.`text_d` SEPARATOR ',') FROM `details` as t2 
       WHERE t2.`id_r`=t1.`id_r`) as `text_d`
FROM `register` as t1

Возможно:

SELECT
    R.id_r, R.name, R.[text], 
    D1.text_d AS 'text_d_a', 
    D2.text_d AS 'text_d_b'
FROM 
    register R
    LEFT JOIN details D1 ON R.id_r = D1.id_r AND D1.text_d LIKE '%a%'
    LEFT JOIN details D2 ON R.id_r = D2.id_r AND D2.text_d LIKE '%b%'
Другие вопросы по тегам