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

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

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 21:55 08.07.25 
Компютри и Интернет
   >> Бази данни
*Кратък преглед

Страници по тази тема: 1 | 2 | (покажи всички)
Тема Обединяване на таблицинови  
Автор mousebg (непознат )
Публикувано01.04.08 11:42



Здравейте,
имам следният въпрос към вас с молба за помощ. Трябва да обединя множество таблици около 300 да кажем с по 3 реда всяка.При обединяването MySQL би трябвало да направи някъде около 3 на степен 300 комбинации.Първият въпрос ми е дали подобно нещо е реално да се извърши или ще забие компа?
Вторият ми въпрос е:Да кажем че успее да направи всичките комбинации на мен ще ми трябват само някои от тях.Ето един пример с 2 таблици като този принцип трябва да се отнася за комбинация от 300 например

Таблица 1 Таблица2
Ред Стоиност Ред Стоиност
1 ст"а" 1 ст"d"
2 ст"b" 2 ст"e"
3 ст"c" 3 ст"f "

Трябват ми комбинациите от следните редове/но пак казжам това да се отнася за всичките комбинации от 300 таблици/

Таблица 1 - ред1 комбиниран с ред 2 и 3 от Таблица 2
Таблица 1 - ред2 комбиниран с ред 1 и 3 от Таблица 2
Таблица 1 - ред3 комбиниран с ред 1 и 2 от Таблица 2
Таблица 2 - ред1 комбиниран с ред 2 и 3 от Таблица 1
Таблица 2 - ред2 комбиниран с ред 1 и 3 от Таблица 1
Таблица 2 - ред3 комбиниран с ред 1 и 2 от Таблица 1

Благодаря ви предварително за помоща и ще бъда благодарен ако дадете някакви идеи
Поздрави
Мишо



Тема Re: Обединяване на таблицинови [re: mousebg]  
Автор bira_more (бира)
Публикувано01.04.08 12:18



select * from tabl1,tabl2 where tabl1.id != tabl2.id
select * from tabl2,tabl1 where tabl1.id != tabl2.id

Ако са 3 таблиците - ще имаш доста повече селекти, а where - ще нарастне доста:
select * from tabl1,tabl2,tabl3 where tabl1.id != tabl2.id and tabl1.id != tabl3.id and tabl2.id != tabl3.id
Според мен е по добре да си ги дръпнеш резултатите в array - за всяка таблица и след това да си ги комбинираш както ти е кеф.

Bеer? Mоre?




Тема Re: Обединяване на таблицинови [re: bira_more]  
Автор mousebg (непознат )
Публикувано01.04.08 13:11



Благодаря ти за бързият отговор. :) Само едно уточнение.Ако вкарам всички комбинации от 300 таблици в array в PHP нали пак ще трябва да описжам селекциите на отделните елементи на масива кое да ми покаже и кое не.От базата данни ще го варне като асоциативен масив. А и относно първият ми въпрос...предвид броя на комбинациите дето се получва 3 на степен 300...не би ли се получил проблем?
Благодаря отново
:)



Тема Re: Обединяване на таблицинови [re: mousebg]  
Автор bira_more (бира)
Публикувано02.04.08 00:34



Разбира се че ще се получи - всякак ще се получи - и на асемблер да въртиш - пак ще е сложно.
Но пък може да видиш кога баш ще ти гръмне машината - в смисъл увеличаваш постепенно - 2,3,4,5,6,7 ... таблици, докато я успиш напълно

.
Ако имаш масивите - аз бих го правил на C - би могъл да почнеш да генерираш комбинации докато си задръстиш хард диска.
2 на степен 32 - са някакви си жалки 4 милиарда - по един байт да е - станаха 4 гига.
Мисля че при около 20 таблици - ще окапеш - 3 на 20 е 3 милиарда.
Тоест ще ти трябва доста памет да знаеш

Bеer? Mоre?



Тема Re: Обединяване на таблицинови [re: mousebg]  
Автор mousebg (непознат )
Публикувано02.04.08 11:17



Ами как тогава да завъртя всичките комбинации така че да не забие машината.В масив и после да му дам да върти комбинациите.?Или ако имаш предвид някакъв друг алгоритъм ще се радвам да го споделиш :) ммога да го напиша на ПХП :)



Тема Re: Обединяване на таблицинови [re: mousebg]  
Автор wqw (АзСъмЖив)
Публикувано02.04.08 13:11



Очевидно 6-те реда в примерния резултат не са 3^2! Я пак виж нещо факториелна сложност да не бъркаш.

Как точно комбинираш 3-та таблица, щото това което бирата е написал е зловещо.

cheers,
</wqw>



Тема Re: Обединяване на таблицинови [re: wqw]  
Автор mousebg (непознат )
Публикувано02.04.08 14:56



Значи при 2 таблици комбинациите които ми трябват са

Таблица 1 - ред1 комбиниран с ред 2 и 3 от Таблица 2
Таблица 1 - ред2 комбиниран с ред 1 и 3 от Таблица 2
Таблица 1 - ред3 комбиниран с ред 1 и 2 от Таблица 2
Таблица 2 - ред1 комбиниран с ред 2 и 3 от Таблица 1
Таблица 2 - ред2 комбиниран с ред 1 и 3 от Таблица 1
Таблица 2 - ред3 комбиниран с ред 1 и 2 от Таблица 1

Тоест тук от пълното комбиниране = 9 реда взимам само 6 в които дефакто редовете от едната таблица и втората не се повтарят

При три таблици трябва да са следните комбинации

Таблица 1 - ред1 комбиниран с ред 2 и 3 от Таблица 2
Таблица 1 - ред2 комбиниран с ред 1 и 3 от Таблица 2
Таблица 1 - ред3 комбиниран с ред 1 и 2 от Таблица 2

Таблица 1 - ред1 комбиниран с ред 2 и 3 от Таблица 3
Таблица 1 - ред2 комбиниран с ред 1 и 3 от Таблица 3
Таблица 1 - ред3 комбиниран с ред 1 и 2 от Таблица 3

Таблица 2 - ред1 комбиниран с ред 2 и 3 от Таблица 1
Таблица 2 - ред2 комбиниран с ред 1 и 3 от Таблица 1
Таблица 2 - ред3 комбиниран с ред 1 и 2 от Таблица 1

Таблица 2 - ред1 комбиниран с ред 2 и 3 от Таблица 3
Таблица 2 - ред2 комбиниран с ред 1 и 3 от Таблица 3
Таблица 2 - ред3 комбиниран с ред 1 и 2 от Таблица 3

Таблица 3 - ред1 комбиниран с ред 2 и 3 от Таблица 1
Таблица 3 - ред2 комбиниран с ред 1 и 3 от Таблица 1
Таблица 3 - ред3 комбиниран с ред 1 и 2 от Таблица 1

Таблица 3 - ред1 комбиниран с ред 2 и 3 от Таблица 2
Таблица 3 - ред2 комбиниран с ред 1 и 3 от Таблица 2
Таблица 3 - ред3 комбиниран с ред 1 и 2 от Таблица 2

тоест 3 таблици комбинациите мейду таблиците е 3!=6 и по 3 комбинации за всяка = 18 комбинации.

Плс ако имате идея как да реша този проблем моля споделете я
Отново много благодаря за помоща



Тема Re: Обединяване на таблици [re: mousebg]  
Автор Beceляk У (непознат )
Публикувано02.04.08 18:29



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



Тема Re: Обединяване на таблицинови [re: mousebg]  
Автор bira_more (бира)
Публикувано03.04.08 03:06



Уфф - не мога да направя точна сметка, ама все ми е на акъла че твоята няма да я бъде - в смисъл няма достатъчно капацитет на земята та да запомниш резултатите.
Иначе - със селекти взимаш резултатите в 300 масива, които в същност са част от по голям масив.
И след това почваш да въртиш цикли като..... докато лагерите на вентилатора ти станат квадратни....
За опит - пробвай с 2,3 и т.н. таблици - като засичаш колко време отнема, особено като минеш 10 ...
С 2, 3, 4 - в същност ще тестваш да видиш дали правилно въртиш циклите

Bеer? Mоre?




Тема Re: Обединяване на таблицинови [re: mousebg]  
Автор wqw (АзСъмЖив)
Публикувано03.04.08 17:57



-- DROP TABLE Table1, Table2, Table3, Table4, Table5

CREATE TABLE Table1(ID INT NOT NULL)
CREATE TABLE Table2(ID INT NOT NULL)
CREATE TABLE Table3(ID INT NOT NULL)
CREATE TABLE Table4(ID INT NOT NULL)
CREATE TABLE Table5(ID INT NOT NULL)

INSERT Table1
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3

INSERT Table2 SELECT ID FROM Table1
INSERT Table3 SELECT ID FROM Table1
INSERT Table4 SELECT ID FROM Table1
INSERT Table5 SELECT ID FROM Table1

SELECT a.Tbl1, a.ID1, b.Tbl2, b.ID2, b.ID3
FROM (
SELECT ID, 1 FROM Table1 UNION ALL
SELECT ID, 2 FROM Table2 UNION ALL
SELECT ID, 3 FROM Table3 UNION ALL
SELECT ID, 4 FROM Table4 UNION ALL
SELECT ID, 5 FROM Table5
) a(ID1, Tbl1)
JOIN (
SELECT a.ID, b.ID, 1 FROM Table1 a, Table1 b WHERE a.ID < b.ID UNION ALL
SELECT a.ID, b.ID, 2 FROM Table2 a, Table2 b WHERE a.ID < b.ID UNION ALL
SELECT a.ID, b.ID, 3 FROM Table3 a, Table3 b WHERE a.ID < b.ID UNION ALL
SELECT a.ID, b.ID, 4 FROM Table4 a, Table4 b WHERE a.ID < b.ID UNION ALL
SELECT a.ID, b.ID, 5 FROM Table5 a, Table5 b WHERE a.ID < b.ID
) b(ID2, ID3, Tbl2)
ON a.Tbl1 <> b.Tbl2 AND a.ID1 <> b.ID2 AND a.ID1 <> b.ID3
ORDER BY Tbl1, Tbl2, ID1

Резултат:
Tbl1        ID1         Tbl2        ID2         ID3

----------- ----------- ----------- ----------- -----------
1 1 2 2 3
1 2 2 1 3
1 3 2 1 2
1 1 3 2 3
1 2 3 1 3
1 3 3 1 2
1 1 4 2 3
1 2 4 1 3
1 3 4 1 2
1 1 5 2 3
1 2 5 1 3
1 3 5 1 2
2 1 1 2 3
2 2 1 1 3
2 3 1 1 2
2 1 3 2 3
2 2 3 1 3
2 3 3 1 2
2 1 4 2 3
2 2 4 1 3
2 3 4 1 2
2 1 5 2 3
2 2 5 1 3
2 3 5 1 2
3 1 1 2 3
3 2 1 1 3
3 3 1 1 2
3 1 2 2 3
3 2 2 1 3
3 3 2 1 2
3 1 4 2 3
3 2 4 1 3
3 3 4 1 2
3 1 5 2 3
3 2 5 1 3
3 3 5 1 2
4 1 1 2 3
4 2 1 1 3
4 3 1 1 2
4 1 2 2 3
4 2 2 1 3
4 3 2 1 2
4 1 3 2 3
4 2 3 1 3
4 3 3 1 2
4 1 5 2 3
4 2 5 1 3
4 3 5 1 2
5 1 1 2 3
5 2 1 1 3
5 3 1 1 2
5 1 2 2 3
5 2 2 1 3
5 3 2 1 2
5 1 3 2 3
5 2 3 1 3
5 3 3 1 2
5 1 4 2 3
5 2 4 1 3
5 3 4 1 2

(60 row(s) affected)

cheers,
</wqw>




Страници по тази тема: 1 | 2 | (покажи всички)
*Кратък преглед
Клуб :  


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

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