Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 23:15 13.06.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Събиране на елементите на две таблици в PostgreSQL
АвторPetrov (Нерегистриран) 
Публикувано18.02.03 19:42  



Здравейте. Наложи ми се да реша следната задача:

Имам две таблици в база данни PostreSQL с колони name (text) и value (int). Идентифицирането на редовете става по полето "име". Всяка таблица може да съдържа само един ред с определено "име". Всяка таблица може да съдържа ред, с име, еднакво на ред от дргата таблица. Задачата е, двете таблици да се съберат така, че събирайки първата с втората (условно приемам едната за първа, а другата за втора), във втората таблица да получим всички редове с неповтарящо се име, а редовете с повтарящо се име да бъдат събрани (да се събере полето value).

Пример:

Първа таблица:

name: value:
Pesho 3
Kiko 4
Ivan 8

Втора таблица:

name: value:
Stefan 1
Ivan 2
Kiko 3

След събирането във втората таблица трябва да се получи:

name: value:
Pesho 3
Kiko 7
Ivan 10
Stefan 1

Задачата е малко странна. Едната таблица периодично се създава от специфичен софтуер (не мога да променя нищо в структурата и), а другата таблица служи за да "събира" първата. Въпросното "събиране" се прави периодично.

Аз написах функция на PHP която изпълнява задачата, но огромен проблем е скоростта. Тъй като нямам опит нито в писането на PHP, нито в бази данни, аз написах функция със следния алгоритъм, предаден накратко: запитваме за всички елементи от първата таблица; цикъл по всички редове на първата таблица: запитваме за ред със същото име във втората таблица , ако има - събираме редовете (полетата value) и ги ъпдейтваме във втората таблица, ако няма само добавяме реда към втората таблица.

Това работи, но бавно - за всеки ред от първата таблица (може да е доста голяма) се правят по две запитвания към базата данни, което, стува ми се, е причината за бавната работа.

Ще съм много благодарен, ако някой с опит в PostgreSQL ми даде напътствия за оптимизиране и още по-благодарен, ако ми предложи решение.

Благодаря предварително.



Цялата тема
ТемаАвторПубликувано
* Събиране на елементите на две таблици в PostgreSQL Petrov   18.02.03 19:42
. * Re: Събиране на елементите на две таблици в Postgr salle   18.02.03 21:37
. * Re: Събиране на елементите на две таблици в Postgr Petrov   18.02.03 22:02
. * Re: Събиране на елементите на две таблици в Postgr Petrov   18.02.03 22:04
. * Re: Събиране на елементите на две таблици в Postgr salle   18.02.03 22:53
. * Re: Събиране на елементите на две таблици в Postgr Petrov   18.02.03 23:42
. * Re: Събиране на елементите на две таблици в Postgr salle   19.02.03 00:02
. * Re: а ако те мързи ... salle   19.02.03 00:24
. * Re: Мерси... Petrov   19.02.03 10:27
. * Re: Събиране на елементите на две таблици в Postgr phpGuru   19.02.03 12:42
. * Re: Грешката е моя! Petrov   20.02.03 13:47
. * Re: Грешката е моя! phpGuru   20.02.03 14:46
. * малка добавка phpGuru   20.02.03 17:31
. * Re: малка добавка Petrov   20.02.03 22:16
. * Re: малка добавка phpGuru   21.02.03 12:15
. * пак добавка phpGuru   21.02.03 12:26
. * Re: пак добавка - пояснение phpGuru   21.02.03 12:36
. * Re: Грешката е моя! salle   20.02.03 16:25
. * Re: Грешката е моя! phpGuru   20.02.03 16:52
. * Re: :) salle   21.02.03 00:23
. * Re: :) phpGuru   21.02.03 12:22
. * Re: :) - малко муза phpGuru   21.02.03 13:17
. * Re: :) - малко муза phpGuru   21.02.03 14:12
. * Re: е нука вече зависи .. salle   21.02.03 14:39
. * Re: е нука вече зависи .. phpGuru   21.02.03 15:12
. * Re: е нука вече зависи .. phpGuru   21.02.03 15:34
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.