powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сформировать столбци вместо строк в выводе
17 сообщений из 17, страница 1 из 1
Сформировать столбци вместо строк в выводе
    #38522416
Запрос возвращает две колонки ID и NAME несколько строк.
Можно-ли, как-то вывести в одну строку n-Колонок типа NAME_n, где n это ID
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522427
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай ЖуковЗапрос возвращает две колонки ID и NAME несколько строк.
Можно-ли, как-то вывести в одну строку n-Колонок типа NAME_n, где n это ID

теоретически можно через одно физиологическое отверстие,
но лучше оформите это на клиентском языке (PHP, Java, etc...)
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522452
javajdbcтеоретически можно через одно физиологическое отверстие,
но лучше оформите это на клиентском языке (PHP, Java, etc...)

Клиентский Язык не вариант
Полей подобных NAME в запросе 4-5 а ID 2-4
Кроме них есть ещё около 20 полей

Вот и получится результат на выходе не 100 строк а 200-400 и в каждой дублированные 20 параметров вместо лишних 4-15 колонок
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522459
Вот и получается что 100 строк в 35 колонок лучше чем 400 строк в 25 колонок
3500 значений вместо 10000 и грузи ими и без того дохлый клиентский комп
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522476
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай ЖуковВот и получается что 100 строк в 35 колонок лучше чем 400 строк в 25 колонок
3500 значений вместо 10000 и грузи ими и без того дохлый клиентский комп


приведите минимально-рабочий пример
исходных данных и ожидаемый результат.

В явном виде транспозиции строк-колонок в мускл-е нет,
но можно занудно за-хардкодить много-колоночный вывод.
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522645
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
CREATE TABLE IF NOT EXISTS `lang` (
  `lang_id` int(11) NOT NULL AUTO_INCREMENT,
  `_on` int(11) NOT NULL,
  `lang_name` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`lang_id`),
  KEY `_on` (`_on`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `lang` (`lang_id`, `_on`, `lang_name`) VALUES
(1, 1, 'ru'),
(2, 1, 'en'),
(3, 0, 'pg');

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `type` (`type`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

INSERT INTO `test` (`id`, `type`) VALUES
(1, 50),
(2, 60),
(3, 70),
(4, 80);

CREATE TABLE IF NOT EXISTS `test_lang` (
  `id` int(11) NOT NULL,
  `lang` int(11) NOT NULL,
  `name` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  KEY `id` (`id`),
  KEY `lang` (`lang`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `test_lang` (`id`, `lang`, `name`) VALUES
(1, 1, 'test1'),
(1, 2, 'test2'),
(1, 3, 'test3'),
(2, 1, 'test4'),
(2, 2, 'test5'),
(2, 3, 'test6'),
(3, 1, 'test7'),
(3, 2, 'test8'),
(3, 3, 'test9');



Текущий запрос
Код: sql
1.
2.
3.
4.
SELECT * FROM test AS t 
LEFT JOIN test_lang AS tl ON tl.id=t.id 
LEFT JOIN lang AS l ON l.lang_id=tl.lang
WHERE l._on='1'





Хочется получить id type name_1 name_2 (ну и возможно для текущего примера name_3 если в таблице lang._on='1')
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522654
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуков,

пожалуйста выдайте таблицу желаемого результата.

>> Хочется получить id type name_1 name_2 (ну и возможно для текущего
примера name_3 если в таблице lang._on='1')

мне не совсем понятно что вы здесь хотите.
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522663
хочу получить
id type name_1 name_2 lang_name
1 50 test1 test2 ru
2 60 test3 test4 en
3 70 test5 test6 pg
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522672
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай Жуковхочу получить
id type name_1 name_2 lang_name
1 50 test1 test2 ru
2 60 test3 test4 en
3 70 test5 test6 pg

ваши ожидаемые результаты никак не сопадают
с последней картинкой из 15399939 .
Например там нет тест2-ру
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522676
Сори вечер заработался

id type name_1 name_2
1 50 test1 test2
2 60 test3 test4
3 70 test5 test6
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522689
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай ЖуковСори вечер заработался

id type name_1 name_2
1 50 test1 test2
2 60 test3 test4
3 70 test5 test6

ок, задача не так чтобы сложная, но потребует немно навыка
работры с переменными:

1. прочиатйте ФАК по Топ-Н квери:
7489069

2. вам надо будет выбрать-пронумеровать первые две (или 3 или 4, или сколько хотите )
записи для каждой группы с одинаковым TYPE

3. затем классическое схлопывание с группировкой.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
  type,
  max(if(group_num=1, name, null)) name_col_1,
  max(if(group_num=2, name, null)) name_col_2,
  max(if(group_num=3, name, null)) name_col_3,
  max(if(group_num=4, name, null)) name_col_4
from
(.........тут будет пре-выборка с ТОП-Н нумерацией......................) zz
group by type



где group_num -- нумерация записи из TOP-N подзапроса.
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522703
Я не знаю сколько будет колонок добавляться
Это зависит от того какой результат получается после
Код: sql
1.
SELECT l.lang_id AS sufix FROM lang AS l WHERE l._on="1" ORDER BY l.lang_id ASC
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522705
Из приведенных исходников
sufix получит результат 1 и 2
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522707
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай ЖуковЯ не знаю сколько будет колонок добавляться
Это зависит от того какой результат получается после
Код: sql
1.
SELECT l.lang_id AS sufix FROM lang AS l WHERE l._on="1" ORDER BY l.lang_id ASC



...тогда -- на клиенте....
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38522971
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc...тогда -- на клиенте....а можно навернуть процедурку, в ней сделать все проверки, по их результатам наклепать текст запроса, а потом - execute prepared statement...
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38523382
А примерчик?
...
Рейтинг: 0 / 0
Сформировать столбци вместо строк в выводе
    #38523449
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

а смысел? Сначала подрочить сервер на предмет "а скажи ка мне братан, чего там у тебя есть?", а потом ещё разок "а отдай-ка мне вот такую фигнюшку!"... да ещё и с ХП промеж них. Не, ну ежели серваку делать нефиг или надоть бабло попилить поширше...

имхо, такие вещи правильнее перестраивать на клиенте, всёж-таки.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сформировать столбци вместо строк в выводе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]