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

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

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

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


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

В явном виде транспозиции строк-колонок в мускл-е нет,
но можно занудно за-хардкодить много-колоночный вывод.
...
Рейтинг: 0 / 0
10.01.2014, 23:09:31
    #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
10.01.2014, 23:23:39
    #38522654
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать столбци вместо строк в выводе
Николай Жуков,

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

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

мне не совсем понятно что вы здесь хотите.
...
Рейтинг: 0 / 0
10.01.2014, 23:42:55
    #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
10.01.2014, 23:59:48
    #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
11.01.2014, 00:10:47
    #38522676
Сформировать столбци вместо строк в выводе
Сори вечер заработался

id type name_1 name_2
1 50 test1 test2
2 60 test3 test4
3 70 test5 test6
...
Рейтинг: 0 / 0
11.01.2014, 00:29:17
    #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
11.01.2014, 00:53:42
    #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
11.01.2014, 00:55:39
    #38522705
Сформировать столбци вместо строк в выводе
Из приведенных исходников
sufix получит результат 1 и 2
...
Рейтинг: 0 / 0
11.01.2014, 00:57:02
    #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
11.01.2014, 16:04:16
    #38522971
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать столбци вместо строк в выводе
javajdbc...тогда -- на клиенте....а можно навернуть процедурку, в ней сделать все проверки, по их результатам наклепать текст запроса, а потом - execute prepared statement...
...
Рейтинг: 0 / 0
12.01.2014, 11:36:56
    #38523382
Сформировать столбци вместо строк в выводе
А примерчик?
...
Рейтинг: 0 / 0
12.01.2014, 13:49:25
    #38523449
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать столбци вместо строк в выводе
tanglir,

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

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


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