Вывод результатов из одной таблицы и одного столбца в два разных столбца - MySQL

Узнай цену своей работы

Формулировка задачи:

Ребят помогите, измучалась совсем, не знаю как решить. Есть таблица Таблица t2
 

Id Pid Pr Text

1 1 0 'sub text1 1'
2 1 1 'sub text1 2'
3 1 1 'sub text1 3'
4 2 1 'sub text2 1'
5 3 0 'sub text3 1'
6 2 1 'sub text2 2'
7 3 1 'sub text3 2'
8 5 0 'sub text5 1'
Нужно выбрать из таблицы t2 информацию в следующем виде: требуемый результат запроса:
 

Pid Text_pr_0 Text_pr_1

1 'sub text1 1' 'sub text1 2'
2 пусто(не Null) 'sub text2 1'
3 'sub text3 1' 'sub text3 2'
5 'sub text5 1' пусто(не Null)
т.е. количество строк в результате = количеству различных значений Pid; в столбце Text_pr_0 – информация из поля Text записи с признаком Pr = 0; в столбце Text_pr_1 – информация из поля Text записи с признаком Pr = 1; другие значения признака Pr игнорируются; (если существует более одной записи с одинаковым признаком Pr, то выберите конкретное значение Text по Вашему усмотрению). Долгими мучениями написала скил:
SELECT DISTINCT `Pid` ,CASE WHEN `Pr`=0 THEN `Text` END AS Text_pr_0 ,CASE WHEN `Pr`=1 THEN `Text` END AS Text_pr_1 FROM t2 WHERE `Pr` IN (0, 1) GROUP BY `Pid`
Но скил возвращает : Единственный вариант, который был близок к истине, еслиб только не NULL значения все испортили
 

Pid Text_pr_0 Text_pr_1

1 'sub text1 1' NULL
2 NULL 'sub text2 1'
3 'sub text3 1' NULL
5 'sub text5 1' NULL

Решение задачи: «Вывод результатов из одной таблицы и одного столбца в два разных столбца»

textual
Листинг программы
SELECT
    Pid,
    IFNULL((SELECT `Text` FROM t2 WHERE Pr = 0 AND t2.Pid = t2_1.Pid LIMIT 1), 'Text') AS Text_pr_0,
    IFNULL((SELECT `Text` FROM t2 WHERE Pr = 1 AND t2.Pid = t2_1.Pid LIMIT 1), 'Text') AS Text_pr_1
FROM t2 AS t2_1
GROUP BY Pid

Объяснение кода листинга программы

  1. Код написан на SQL языке.
  2. Задача - вывод результатов из одной таблицы и одного столбца в два разных столбца.
  3. В коде используется оператор SELECT для выбора нужных столбцов из таблицы t2.
  4. В каждом из выбранных столбцов используется функция IFNULL для замены NULL значений на 'Text'.
  5. Первое выражение в функции IFNULL выбирает значение столбца 'Text' из таблицы t2, где Pr = 0 и Pid = Pid группы.
  6. Второе выражение в функции IFNULL выбирает значение столбца 'Text' из таблицы t2, где Pr = 1 и Pid = Pid группы.
  7. Результаты обоих выражений сохраняются в двух разных столбцах с именами Text_pr_0 и Text_pr_1.
  8. Код применяется к таблице t2_1, которая является псевдонимом для таблицы t2.
  9. Результаты группируются по столбцу Pid.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5