Mysql >> postgreSQL

serrerer

помогите переделать на postgreSQL eto iz O'reilly
insert into account (account_id, product_cd, cust_id, open_date,
last_activity_date, status, open_branch_id,
open_emp_id, avail_balance, pending_balance)
select null, a.prod_cd, c.cust_id, a.open_date, a.last_date, 'ACTIVE',
e.branch_id, e.emp_id, a.avail, a.pend
from customer c cross join 
(select b.branch_id, e.emp_id 
from branch b inner join employee e on e.assigned_branch_id = b.branch_id
where b.city = 'Woburn' limit 1) e
cross join
(select 'CHK' prod_cd, '2000-01-15' open_date, '2005-01-04' last_date,
1057.75 avail, 1057.75 pend union all
select 'SAV' prod_cd, '2000-01-15' open_date, '2004-12-19' last_date,
500.00 avail, 500.00 pend union all
select 'CD' prod_cd, '2004-06-30' open_date, '2004-06-30' last_date,
3000.00 avail, 3000.00 pend) a
where c.fed_id = '111-11-1111';
smotret sdes table accounthttp: //examples.oreilly.com/9780596520847/LearningSQLExample.sql
8 ответов

serrerer

Код вполне MySQL-пригодный, так что, похоже, вам нужно ждать ответа в другом подфоруме.


serrerer

miksoft,У Вас он работает ? не может быть ((


serrerer

miksoft,У Вас он работает ? не может быть ((
Нет, я даже не пробовал его запускать. Но в самом запросе не вижу почему бы ему не работать в MySQL.


serrerer

serrerer,


serrerer

Нет, я даже не пробовал его запускать. Но в самом запросе не вижу почему бы ему не работать в MySQL.
дык , там нет даже values : я все по детально разобрал вот что получилось:values (1, select a.prod_cd, c.cust_id, a.open_date, a.last_date, 'ACTIVE',e.branch_id, e.emp_id, a.avail, a.pend from customer c cross join (select b.branch_id, e.emp_id from branch b inner join employee e on e.assigned_branch_id = b.branch_id where b.city = 'Woburn' limit 1) ecross join(select 'CHK' prod_cd, '2000-01-15' open_date, '2005-01-04' last_date, 1057.75 avail, 1057.75 pend union all select 'SAV' prod_cd, '2000-01-15' open_date, '2004-12-19' last_date,500.00 avail, 500.00 pend union allselect 'CD' prod_cd, '2004-06-30' open_date, '2004-06-30' last_date,3000.00 avail, 3000.00 pend) awhere c.fed_id = '111-11-1111' ) ; т.е надо разбить на ячейки для каждой колонки , подумал уже view-table сделать что6 от туда загонят данные ну это вообще супер сложно !


serrerer

дык , там нет даже values :
values используется только когда нужно вставлять конкретные значения.А когда нужно вставить результат другого запроса, то как раз и используется конструкция INSERT ... SELECT ...Подробнее см. INSERT ... SELECT Syntax


serrerer

miksoft,спасибо но это MySQL а не Postgresql


serrerer

serrerer,
/* с CROSS JOIN не связывался, но */
/* даже учитывая то что в MySQL CROSS == INNER*/
from customer c cross join (...) AS e 
/* все-таки должен быть */
ON /* что с чем-что перекрестить */
и лучше показать ошибку хотя бы MySQLа как переделать в PostgreSQL - вопрос должен быть в форуме Postgres...