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

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

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

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

В общем-то согласен, но JOINы будут множиться при увеличении числа колонок, а при GROUP BY - достаточно одной таблеткиицы
...
Рейтинг: 0 / 0
15.07.2015, 10:35:58
    #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
15.07.2015, 10:43:58
    #39007622
помоготите составить запрос
pernik,

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

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

я так понял групировки по name? а про агрегаты не понял
...
Рейтинг: 0 / 0
15.07.2015, 11:16:59
    #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
15.07.2015, 11:54:45
    #39007716
pernik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоготите составить запрос
Добрый Э - Эх,

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

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


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