Вывод результатов из одной таблицы и одного столбца в два разных столбца - MySQL
Формулировка задачи:
Ребят помогите, измучалась совсем, не знаю как решить.
Есть таблица Таблица t2
Нужно выбрать из таблицы t2 информацию в следующем виде:
требуемый результат запроса:
т.е. количество строк в результате = количеству различных значений Pid;
в столбце Text_pr_0 – информация из поля Text записи с признаком Pr = 0;
в столбце Text_pr_1 – информация из поля Text записи с признаком Pr = 1;
другие значения признака Pr игнорируются;
(если существует более одной записи с одинаковым признаком Pr, то выберите конкретное значение Text по Вашему усмотрению).
Долгими мучениями написала скил:
Но скил возвращает :
Единственный вариант, который был близок к истине, еслиб только не NULL значения все испортили
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' |
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) |
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`
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
Объяснение кода листинга программы
- Код написан на SQL языке.
- Задача - вывод результатов из одной таблицы и одного столбца в два разных столбца.
- В коде используется оператор SELECT для выбора нужных столбцов из таблицы t2.
- В каждом из выбранных столбцов используется функция IFNULL для замены NULL значений на 'Text'.
- Первое выражение в функции IFNULL выбирает значение столбца 'Text' из таблицы t2, где Pr = 0 и Pid = Pid группы.
- Второе выражение в функции IFNULL выбирает значение столбца 'Text' из таблицы t2, где Pr = 1 и Pid = Pid группы.
- Результаты обоих выражений сохраняются в двух разных столбцах с именами Text_pr_0 и Text_pr_1.
- Код применяется к таблице t2_1, которая является псевдонимом для таблицы t2.
- Результаты группируются по столбцу Pid.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д