|
|
|
Помогите составить запрос для сводной таблицы
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Имеется база со следующей структурой: Пара связанных таблиц Код: 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. 45. 46. Код: 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. 45. 46. Таких пар таблиц пара десятков, у всех одинаковая структура (просто меняется название merlion на что-то другое, например resource ) P.S.: Вот линк на тему, где я уже задавал вопросы по этой базе - http://www.sql.ru/forum/1053727/ Это всё таблицы с ценами на товар в разных магазинах. Есть таблицы с ценами нашего магазина. У них пока такая структура Также есть 2 таблицы с идентичной структурой. Для конкретики они будут с названием _myshop / Необходимо вывести такую таблицу: ] myshopdate_myshopmerliondate_merlionresourcedate_resourceТовар 1100р14.03.201480р10.03.201490р14.03.2014Товар 2350р10.10.2013500р14.03.2014-- Вот сейчас возник вопрос с тем, как это лучше сделать? Пока представляю, что надо добавить таблицу _myshop_link (ID serial, id_article_myshop, shop_name, id_othershop) Получится условная связь 1-ко-многим. В колонку shop_name будет заноситься название магазина (название таблицы (merlion, resource и т.д.)), а в колонку id_othershop соотвественно id товара из этого магазина Код: sql 1. 2. 3. 4. 5. Если местные специалисты сочтут вариант такой связи таблиц годным, то будет следующий вопрос: Можно ли как-то написать быстрый запрос, который выведет таблицу с той структурой, что я привёл выше? Если такой запрос написать нереально, то тогда как это реализовать? У меня есть вариант, что надо создавать временную таблицу с этими данными и выполнять запрос по каждой позиции Уф... вроде постарался изложить всё доступным языком. Надеюсь на советы и рекомендации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 07:43:36 |
|
||
|
Помогите составить запрос для сводной таблицы
|
|||
|---|---|---|---|
|
#18+
cr@nkТаких пар таблиц пара десятков, у всех одинаковая структура (просто меняется название merlion на что-то другое, например resource ) Это всё таблицы с ценами на товар в разных магазинах.возможно, стоит эти таблицы объединить вместе, с дополнительным полем shop_id cr@nkНеобходимо вывести такую таблицу: myshopdate_myshopmerliondate_merlionresourcedate_resourceТовар 1100р14.03.201480р10.03.201490р14.03.2014Товар 2350р10.10.2013500р14.03.2014--только по двум магазинам, или по большему числу? надо сделать join запрос. как вы узнаете, что это один и тот же товар в разных магазинах? строка name может не совпадать? например 'Apple iPhone 4s (черный)' != 'iphone 4s black'. надо иметь общую единственную таблицу товаров (моделей). товары в ней не должны дублироваться, пересекаться. уровень детализации выбирать каким-то образом. например иметь два разных товара 'Apple iPhone 4s (черный)' и 'Apple iPhone 4s (белый)' или один единственный 'Apple iPhone 4s'? в таблице (у вас таких много одинаковой структуры) товарных предложений ссылаться на таблицу товаров (моделей). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 10:27:18 |
|
||
|
Помогите составить запрос для сводной таблицы
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, возможно, стоит эти таблицы объединить вместе, с дополнительным полем shop_id На данном этапе это выглядит как-то нереально. На этих таблицах завязано несколько сервисов + пара десктопных приложений только по двум магазинам, или по большему числу? надо сделать join запрос. Больше двух как вы узнаете, что это один и тот же товар в разных магазинах? строка name может не совпадать? Да, строки точно будут разные. Поэтому будет ручное сопоставление Название в нашем магазине - id товара в другом магазине ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 10:31:23 |
|
||
|
Помогите составить запрос для сводной таблицы
|
|||
|---|---|---|---|
|
#18+
cr@nkтолько по двум магазинам, или по большему числу? надо сделать join запрос.Больше двухда, тогда джоин (наверное outer) более чем двух таблиц cr@nkДа, строки точно будут разные. Поэтому будет ручное сопоставление Название в нашем магазине - id товара в другом магазинев таблицы магазинов добавить поле model_id, которое будет ссылаться на таблицу товаров (ну или прямо на таблицу вашего магазина) PS: но вы изобретаете велосипед, особенно учитывая "ручное сопоставление". в яндекс.маркете, прайс.ру уже сейчас склеиваются предложения от разных магазинов в одну модель. вам не подходит использовать эти сервисы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 10:58:47 |
|
||
|
Помогите составить запрос для сводной таблицы
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, PS: но вы изобретаете велосипед, особенно учитывая "ручное сопоставление". в яндекс.маркете, прайс.ру уже сейчас склеиваются предложения от разных магазинов в одну модель. вам не подходит использовать эти сервисы? В Яндекс.Маркете нет таких магазинов :( Там в основном розница только. Некое склеивание будет, но оно будет не идеальным... гораздо хуже, чем у маркета по определённым позициям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 11:02:24 |
|
||
|
Помогите составить запрос для сводной таблицы
|
|||
|---|---|---|---|
|
#18+
cr@nk, Добрый день. Не совсем простая задача, так как Pivot или crosstab в СУБД не очень то и хороши, а очень жаль. Да и JOIN не выход, так как необходимо вернуть в конечном итоге 1 таблицу (циклы либо супер запрос). Предлагаю не совсем стандартный подход. Таблицы собрать в одну (union all): shop_name tovar_name date cost "myshop" "Товар 1" 14.03.2014 100 "myshop" "Товар 2" 10.10.2013 350 "merlion" "Товар 1" 10.03.2014 80 "merlion" "Товар 2" 14.03.2014 500 "resource" "Товар 1" 14.03.2014 90 1. Если количество результирующих строк меньше 200 000, то решай через сводные таблице в Excel. Очень просто, особенно если конечная табличка должна представлять Excel файл. 2. Пытаться применить crosstab. Ссылка тут http://www.sql.ru/forum/753420/pivot-est-v-postgres 3. Если больше, то можно поставить задачу на проектирование OLAP куба. Ну это совсем не тривиально, хотя и не сложно. MDX более лучше в этом плане чем SQL. Путь не совсем близкий....... Рекомендации: На счет товара, то нужно использовать closure таблицы, иначе будет все криво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2014, 11:06:04 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=130&tid=1998778]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
342ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 658ms |

| 0 / 0 |
