powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помоготите составить запрос
10 сообщений из 10, страница 1 из 1
помоготите составить запрос
    #39004969
pernik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть две таблицы
tab1,
id name1 Вася2 Петя
tab2
id param value1 вес 652 вес 751 рост 1592 рост 189

нужно получить
name ves rostВася 65159Петя 75 189
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39005001
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pernik,

гугл PIVOT , например Пивот
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39005410
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007,

вовсе не обязательно pivot, можно просто
n left outer join и потом в списке вывода фиксированно прописать n колонок.
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39005537
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

В общем-то согласен, но JOINы будут множиться при увеличении числа колонок, а при GROUP BY - достаточно одной таблеткиицы
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39007608
pernik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,
подскажи что я здесь не так делаю ?
SELECT
`name`,
IF(t2.attr='вес', t2.value, NULL) AS ves
IF(t2.attr='рост', t2.value, NULL) AS `rost`
FROM tab1 t1 join tab2 t2 ON (t1.id = t2.id)
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39007622
pernik,

а почему ты решил, что что-то не так?

З.Ы.
Но вообще, не хватает группировки и агрегатов. Иначе получишь "дагонально разряженную матрицу", а не таблицу
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39007630
pernik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

я так понял групировки по name? а про агрегаты не понял
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39007668
pernikДобрый Э - Эх,

я так понял групировки по name? а про агрегаты не понял

pernik
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
  `name`,
  SUM(IF(t2.attr='вес', t2.value, NULL)) AS ves
  SUM(IF(t2.attr='рост', t2.value, NULL)) AS `rost`
FROM tab1 t1 join tab2 t2 ON (t1.id = t2.id)
GROUP BY `name`
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39007716
pernik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

да, сработало, но это если value = integer а если varchar ?
...
Рейтинг: 0 / 0
помоготите составить запрос
    #39007766
pernik,

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


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