Бабушка, смотри, я сделал двач! Войти !bnw Сегодня Клубы
Есть такие таблицы: users id nick 1 krkm 2 goren 3 zerg value_types id value 1 post 2 comment 3 recommend values id user_id value_id value 1 1 1 50 2 1 2 5000 3 1 3 500 4 2 1 30 5 2 2 3000 6 2 3 300 7 3 1 10 8 3 2 1000 9 3 3 100 Надо получить что-то такое: user post comment recommend krkm 50 5000 500 goren 30 3000 300 zerg 10 1000 100 Куда нажать?
Рекомендовали: @o01eg @kuzy000
#SZ745W / @anonymous / 3127 дней назад

в таблице values имелось в виду value_type_id, ну вы поняли
#SZ745W/R92 / @anonymous / 3127 дней назад
google://sql join ← нажимай
#SZ745W/NLV / @komar / 3127 дней назад
@komar А n колонок из n строк таблицы values мне join сделает?
#SZ745W/TXY / @anonymous --> #SZ745W/NLV / 3127 дней назад

@anonymous >subquery + count
совсем тупой шоле

#SZ745W/HZ7 / @anonymous --> #SZ745W/TXY / 3127 дней назад

иирц у штелетты даже в апи было что-то подобное

#SZ745W/VYR / @goren / 3127 дней назад

@anonymous а, бля, тебе тут вообще нихера не нужны // ппц ты тупой

#SZ745W/76M / @anonymous --> #SZ745W/HZ7 / 3127 дней назад
@anonymous я // спалите как надо
#SZ745W/UKG / @mugiseyebrows --> #SZ745W/76M / 3127 дней назад
>Надо получить что-то такое: user а получишь залупу на воротник, потому что user в postgresql - зарезервировано и именем колонки быть не может. именно поэтому не стоит создавать таблицы из непонятного select'а
#SZ745W/V05 / @vostrik / 3127 дней назад

@vostrik да ты ебонись

#SZ745W/NC0 / @goren --> #SZ745W/V05 / 3127 дней назад
@vostrik а название таблицы `values` тебе норм?
#SZ745W/2TI / @mugiseyebrows --> #SZ745W/V05 / 3127 дней назад
@mugiseyebrows ну оно в исходных данных было, я хуй забил. хотя тоже лажа
#SZ745W/93Y / @vostrik --> #SZ745W/2TI / 3127 дней назад
``` SELECT users.nick as nick, posts.sum as post, comments.sum as comment, recommends.sum as recommend FROM users, (SELECT values.user_id, sum(values.value) as sum FROM values, value_types WHERE values.value_id = value_types.id AND value_types.value = 'post' GROUP BY values.user_id) as posts, (SELECT values.user_id, sum(values.value) as sum FROM values, value_types WHERE values.value_id = value_types.id AND value_types.value = 'comment' GROUP BY values.user_id) as comments, (SELECT values.user_id, sum(values.value) as sum FROM values, value_types WHERE values.value_id = value_types.id AND value_types.value = 'recommend' GROUP BY values.user_id) as recommends WHERE users.id = posts.user_id AND users.id = comments.user_id AND user.id = recommends.user_id ```
#SZ745W/S87 / @krkm / 3127 дней назад

@mugiseyebrows tst=# select nick, type, value from tst order by nick, type;
nick | type | value
-------+-----------+-------
goren | comment | 3000
goren | post | 30
goren | recommend | 300
krkm | comment | 5000
krkm | post | 50
krkm | recommend | 500
zerg | comment | 1000
zerg | post | 10
zerg | recommend | 100
(9 rows)

tst=# select * from crosstab('select nick, type, value from tst order by nick, type') AS tst(row_name varchar, comment int, post int, recommend int);
row_name | comment | post | recommend
----------+---------+------+-----------
goren | 3000 | 30 | 300
krkm | 5000 | 50 | 500
zerg | 1000 | 10 | 100
(3 rows)

#SZ745W/3DA / @anonymous --> #SZ745W/UKG / 3127 дней назад

@krkm sql уровня javascript

#SZ745W/90P / @anonymous --> #SZ745W/S87 / 3127 дней назад
@mugiseyebrows Булки раздвигаешь, SELECT в FOR вставляешь и начинаешь. Для оракла наваялось DECLARE TYPE columnValue IS RECORD ( columnName VARCHAR2(100), columnType VARCHAR2(100), columnLength NUMBER ); TYPE tmp IS TABLE OF columnValue INDEX BY PLS_INTEGER; tmpArray tmp; tableColumsString VARCHAR2(1000); tmpNum NUMBER; BEGIN FOR i IN ( SELECT atc.COLUMN_NAME, atc.DATA_TYPE, atc.DATA_LENGTH FROM All_Tab_Cols atc WHERE atc.owner = USER AND atc.TABLE_NAME = 'AGENTINSTANCES' AND atc.COLUMN_NAME IN ('COUNTRYID') ) LOOP tmpNum := tmpArray.COUNT + 1; tmpArray(tmpNum).columnName := i.column_name; tmpArray(tmpNum).columnType := i.DATA_TYPE; tmpArray(tmpNum).columnLength := i.DATA_LENGTH; END LOOP; FOR i IN 1..tmpArray.COUNT LOOP tableColumsString := tmpArray(i).columnName ||' '|| tmpArray(i).columnType||' ('|| tmpArray(i).columnLength ||')'; END LOOP; EXECUTE IMMEDIATE 'CREATE TABLE TEST_TABLE ( ' || tableColumsString ||' )'; DBMS_OUTPUT.PUT_LINE( tableColumsString ); END;
#SZ745W/T51 / @vostrik --> #SZ745W/UKG / 3127 дней назад

@anonymous (как первую табличку зделать надо объяснять?)

#SZ745W/05R / @anonymous --> #SZ745W/3DA / 3127 дней назад

@vostrik лек

#SZ745W/R0L / @anonymous --> #SZ745W/T51 / 3127 дней назад
@mugiseyebrows и это только сраное создание таблицы. SQL LIKE 'изнасилование%'
#SZ745W/T46 / @vostrik --> #SZ745W/UKG / 3127 дней назад
ура ``` select nick, v1.value, v2.value, v3.value from users left join values_ v1 on v1.value_type_id=1 and v1.user_id=users.id left join values_ v2 on v2.value_type_id=2 and v2.user_id=users.id left join values_ v3 on v3.value_type_id=3 and v3.user_id=users.id; ``` http://sqlfiddle.com/#!9/a0ac76/3
#SZ745W/1KS / @mugiseyebrows / 3127 дней назад
@anonymous объясни с хуя ты решил что значения справочника заебись копипастить в стейтмент? а если там добавится shodochki к post, comment и recommend?
#SZ745W/VJR / @vostrik --> #SZ745W/05R / 3127 дней назад
@anonymous пруф или ироничный синтетический ((генерируемый програмно) как музыка и наркотики) эскьюэль
#SZ745W/WC1 / @mugiseyebrows --> #SZ745W/90P / 3127 дней назад
@mugiseyebrows хуль ура-то, если анон просил n столбцов для n строк справочника?
#SZ745W/T3C / @vostrik --> #SZ745W/1KS / 3127 дней назад
@goren чо сразу я-то?
#SZ745W/M3N / @vostrik --> #SZ745W/NC0 / 3127 дней назад
@vostrik > n колонок из n строк таблицы скуль такое не умеет, нужно функцию ебашить или чотам у них
#SZ745W/SDS / @mugiseyebrows --> #SZ745W/T3C / 3127 дней назад
@vostrik Эти таблицы для примера же, реальные данные совсем другие. // аутисты, что ли, буквально всё воспринимать?
#SZ745W/WH0 / @anonymous --> #SZ745W/V05 / 3127 дней назад
#SZ745W/NUN / @anonymous --> #SZ745W/S87 / 3127 дней назад
#SZ745W/91U / @anonymous --> #SZ745W/1KS / 3127 дней назад
#SZ745W/6C6 / @mugiseyebrows --> #SZ745W/91U / 3127 дней назад
@anonymous техзадание есть техзадание // странная штука техзадание - и если есть хорошо и если нет хорошо
#SZ745W/A7P / @mugiseyebrows --> #SZ745W/WH0 / 3127 дней назад
Да, смотрите #SZ745W/VJR #SZ745W/T3C, там верно сказано. А не настолько тупой (но тупой). Процедурку хочу, да.
#SZ745W/G7P / @anonymous / 3127 дней назад
@mugiseyebrows Техзадание уровня БНВ.
#SZ745W/R9U / @anonymous --> #SZ745W/A7P / 3127 дней назад
@anonymous генерачь запрос [жаваскриптом], так будет в общем виде, понимаемо, редактируемо и по киссу
#SZ745W/HOQ / @mugiseyebrows --> #SZ745W/G7P / 3127 дней назад
@anonymous да один хуй. ты ж не ебешь что у тебя тама в селекте будет. поэтому это плохо, mkay
#SZ745W/C19 / @vostrik --> #SZ745W/WH0 / 3127 дней назад
@vostrik Палю -- "user".
#SZ745W/MRO / @anonymous --> #SZ745W/V05 / 3127 дней назад

@vostrik тупой шоле, тогда надо where воткнуть обв

#SZ745W/BJS / @anonymous --> #SZ745W/VJR / 3127 дней назад
@vostrik какая же хуйня ваш постгресс, сплошные ограничения, возьму монгу кароч
#SZ745W/08Z / @mugiseyebrows --> #SZ745W/C19 / 3127 дней назад

@vostrik (ну или зделать тама ноль, смотря что хочется)

#SZ745W/KQ3 / @anonymous --> #SZ745W/VJR / 3127 дней назад
@anonymous забей хуй на sql, срсли. тама выше изврат ппц для создания, а на любом говноскрипте сделать distinct и запхать в стейтмент - раз плюнуть
#SZ745W/KK9 / @vostrik --> #SZ745W/G7P / 3127 дней назад

@anonymous пиздос, ты задачу нормально давай, да? // #SZ745W/BJS #SZ745W/KQ3 // нули можно джойном зделать, а не забивать в таблицу, обв

#SZ745W/RQG / @anonymous --> #SZ745W/G7P / 3127 дней назад
@anonymous в анус себе воткни. тебе нужен create, а он ни в одном из диалектов не умеет в select для column_name //и это хорошо
#SZ745W/US6 / @vostrik --> #SZ745W/BJS / 3127 дней назад

@vostrik какой нахуй create? ты чо, ёбнутый?

#SZ745W/CJW / @anonymous --> #SZ745W/US6 / 3127 дней назад
@anonymous создай в постгресе табличку с колонкой 'user', умник SQL, MOTHERFUCKER, DO YOU SPEAK IT?
#SZ745W/UHU / @vostrik --> #SZ745W/MRO / 3127 дней назад
@mugiseyebrows блядь, ну я ж показал что PL/SQL умеет, хуле ты
#SZ745W/UFT / @vostrik --> #SZ745W/SDS / 3127 дней назад
@anonymous ты ебнутый, нахуй нужна такая таблица если её не сохранять? выдрать эту срань по отдельности и примитивными селектами можно
#SZ745W/SPG / @vostrik --> #SZ745W/CJW / 3127 дней назад
@mugiseyebrows всё заебись там, эта налетучногенеренная хуйня - для говноскриптов, а биде должна быть биде
#SZ745W/W71 / @vostrik --> #SZ745W/08Z / 3127 дней назад

@vostrik ты на каждый результат select'a новую таблицу создаёшь шоле?

#SZ745W/CH5 / @anonymous --> #SZ745W/SPG / 3127 дней назад
@anonymous где ты видишь тут результат селекта? тут блядь ETL, а не селект
#SZ745W/GER / @vostrik --> #SZ745W/CH5 / 3127 дней назад

@vostrik tst=# create table tst2(nick varchar, type varchar, "user" int);
CREATE TABLE
tst=# \d+ tst2
Table "public.tst2"
Column | Type | Modifiers | Storage | Stats target | Description
--------+-------------------+-----------+----------+--------------+-------------
nick | character varying | | extended | |
type | character varying | | extended | |
user | integer | | plain | |

#SZ745W/3UW / @anonymous --> #SZ745W/UHU / 3127 дней назад
@anonymous олсо куда ты WHERE втыкать собрался, если у тебя в AS неявный CREATE и ты соснешь //может и нет, покажи фиддлер если не соснешь
#SZ745W/AES / @vostrik --> #SZ745W/CH5 / 3127 дней назад
@anonymous а "user" у тебя из селекта, ничо?
#SZ745W/6HN / @vostrik --> #SZ745W/3UW / 3127 дней назад

@vostrik топ пук // в задаче нихуя не сказано, что с этими данными нужно делать.
tst=# create table asd as select * from crosstab('select nick,type,value from tst order by nick,type') AS tst(nick varchar, comment int, post int, recommend int);
SELECT 3
tst=# select * from asd;
nick | comment | post | recommend
-------+---------+------+-----------
goren | 3000 | 30 | 300
krkm | 5000 | 50 | 500
zerg | 1000 | 10 | 100
(3 rows)

#SZ745W/I34 / @anonymous --> #SZ745W/GER / 3127 дней назад

@vostrik в текст запроса для crosstab обв

#SZ745W/5OZ / @anonymous --> #SZ745W/AES / 3127 дней назад
@anonymous да хуле ты тупишь с AS tst(nick varchar, comment int, post int, recommend int) если у тебя там должен быть nick varchar и (SELECT value_type from value_types)
#SZ745W/K2W / @vostrik --> #SZ745W/I34 / 3127 дней назад

@vostrik чо ёпт?
tst=# create table asd2 as select * from crosstab('select nick,type,value from tst order by nick,type') AS tst("user" varchar, comment int, post int, recommend int);
SELECT 3
tst=# select * from asd2;
user | comment | post | recommend
-------+---------+------+-----------
goren | 3000 | 30 | 300
krkm | 5000 | 50 | 500
zerg | 1000 | 10 | 100
(3 rows)

#SZ745W/IMK / @anonymous --> #SZ745W/6HN / 3127 дней назад
@vostrik #SZ745W/T51 выглядит как конская залупа, такое умение равно неумению и нам не нужно, лучше генерить жаваскриптом жаваскрипт жаваскрипт
#SZ745W/TL2 / @mugiseyebrows --> #SZ745W/UFT / 3127 дней назад
@anonymous да ты тупой блядь, у тебя результат SELECT должен быть в tst(), ты блядь не знаешь набора колонок
#SZ745W/K1R / @vostrik --> #SZ745W/IMK / 3127 дней назад
@mugiseyebrows весь SQL выглядит как залупа если его не к тому месту прикладывать, ничо не поделаешь
#SZ745W/WBP / @vostrik --> #SZ745W/TL2 / 3127 дней назад

@vostrik ОП, ты? Нихуя не вижу подобного в ОП-посте.

#SZ745W/Y1V / @anonymous --> #SZ745W/K1R / 3127 дней назад
@anonymous комменты почитай, ОП все пояснил во втором комменте про n колонок. хуле ж вы тупые такие, а
#SZ745W/A3R / @vostrik --> #SZ745W/Y1V / 3127 дней назад
@anonymous valye_types а не values, кстати, полуёбок
#SZ745W/25Z / @vostrik --> #SZ745W/TXY / 3127 дней назад
@vostrik Порядочный дон и не будет прикладывать, он решит всё порядочно. С эскьюэлем всё нормально.
#SZ745W/URM / @mugiseyebrows --> #SZ745W/WBP / 3127 дней назад
@mugiseyebrows олсо, кейсы для такой наркомании есть, при миграции какого-нить говна мамонта с охуилионом данных в более другую схему. говноскриптами ты до пришествия квантовых компов будешь всё парсить
#SZ745W/VWE / @vostrik --> #SZ745W/URM / 3127 дней назад
@anonymous btw ОП нарисовал два справочника в оп-посте очевидно не для того, чтобы значения из них хардкодить
#SZ745W/TJ4 / @vostrik --> #SZ745W/Y1V / 3127 дней назад
@vostrik > говна мамонта > миграции > охуилионом данных > в более другую схему P(a)*P(b)*P(c)*P(d) нужно объяснять?
#SZ745W/9RU / @mugiseyebrows --> #SZ745W/VWE / 3127 дней назад
@mugiseyebrows не надо, на работе насмотрелся. но партия, бывает, говорит НАДО
#SZ745W/QEH / @vostrik --> #SZ745W/9RU / 3127 дней назад
@mugiseyebrows тфв собрал флеш-рояль из четырёх отсосов
#SZ745W/TMM / @mugiseyebrows --> #SZ745W/9RU / 3127 дней назад
@mugiseyebrows да я //рыдает
#SZ745W/HXN / @vostrik --> #SZ745W/TMM / 3127 дней назад
@mugiseyebrows зато я теперь знаю 1000 и 1 способ выстрелить себе в яйца на PL/SQL
#SZ745W/1P1 / @vostrik --> #SZ745W/TMM / 3127 дней назад
@vostrik смотри штоб феминистки не завербовали тама
#SZ745W/LJD / @mugiseyebrows --> #SZ745W/1P1 / 3127 дней назад
@mugiseyebrows тут вместо феминисток орацле дба, не знаю, что хуже
#SZ745W/5TO / @vostrik --> #SZ745W/LJD / 3127 дней назад

хули ты тут денормализируешь

#SZ745W/2HY / @anonymous / 3127 дней назад
@vostrik И в чём смысл лайфхака с собираением и выполнением sql кода в sql запросе?
#SZ745W/3NI / @o01eg --> #SZ745W/T51 / 3127 дней назад
Зачем тебе такого формата данные на выходе sql запроса?
#SZ745W/QUY / @o01eg / 3127 дней назад
@o01eg сделать всё силами человека-биде. попробуй как-нить энтерпрайз, в котором все пять девяток держатся на десятке оракловых кластеров. расскажи людям, которые единственные, кто знает, что за логика в глубинах ораклового говна скрыта, что ты сча все своим говноскриптом порешаешь
#SZ745W/IYR / @vostrik --> #SZ745W/3NI / 3127 дней назад
@o01eg затем, чтобы получить от биде данные из биде в нужном формате. ВНЕЗАПНО все биде именно для этого и сделаны. но ты, конечно можешь пердолиться в террабайтную базу говноскриптом, внося лаги в охулион миллисекунд ПАТАМУШТА УДОБНО
#SZ745W/IQE / @vostrik --> #SZ745W/QUY / 3127 дней назад
Воспользоваться kdb+, конечно же.
#SZ745W/12Z / @l29ah / 3127 дней назад

http://sqlfiddle.com/#!3/142846/6/0 ещё один сикель-тырпрайз (не селект), типа #SZ745W/T51, но с xml-костылём +пивотом, вместо табличной переменной с циклом

#SZ745W/P0J / @kogda / 3127 дней назад
@anonymous А, блядь, у тебя еще и value_types. Простите, не заметил. Данную проблему лучше не решать SQL’ем вообще, только хуже будет.
#SZ745W/7T2 / @komar --> #SZ745W/TXY / 3127 дней назад
@kogda добавил тип - всё съехало нахуй, названия колонок ордерятся по алфавиту, а данные в порядке типов в value_types, нужно где-то добавить пук http://sqlfiddle.com/#!3/9c1be/1
#SZ745W/XE1 / @mugiseyebrows --> #SZ745W/P0J / 3127 дней назад

@mugiseyebrows http://sqlfiddle.com/#!3/fe178/2/0 добавил order by id в получение списка названий колонок; новый тип добавлять отдельным инсертом (или явно указывать id, иначе инсертится puk тоже по алфавиту перед recommend)

#SZ745W/1V5 / @kogda --> #SZ745W/XE1 / 3127 дней назад

@anonymous ппц этот ваш sql, по количеству костылей это что-то уровня баша походу

#SZ745W/74Q / @goren --> #SZ745W/3UW / 3127 дней назад
@kogda а в чём профит делать `insert select union select` по сравнению с `insert values (),()`, ето дамп у мсскл так скриптит данные?
#SZ745W/T0G / @mugiseyebrows --> #SZ745W/1V5 / 3126 дней назад

@mugiseyebrows поддержка многострочных инсертов значений через запятую появилась с SQLServer2008, а я живу в 2005 (не в 2017), поэтому либо набираю строки через юнион и делаю один инсерт, либо количество инсертов по количеству строк, что сильно медленнее

#SZ745W/DZI / @kogda --> #SZ745W/T0G / 3126 дней назад
бля эта чо какой-то новый плагин для монго выпустили?
#SZ745W/Q1R / @anonymous / 3126 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.