Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:26c:bc70:92...–

peter
MS SQL › Prosba o kontrolu kodu z uče…
6. 4. 2017   #215496

jo, a kdyz to budes grupovat, tak tam budes davat misto
a.id_manager = 2
a.id_manager = b.id_zamestnanec
A problem u google by prave by, ze delas propojeni velka tabulka na velka tabulka, coz je casove n*n kroku. Kdyz bys takovych grupovani potreboval udelat vic, tak se to zasekne na nekolik dni :)

To je pripad jednoho programu, co delali kolegove. Maji tam seznam knizek (vedeckych publikaci), kazda knizka ma nekolik autoru a ted potrebovali najit vsechny knizky, ktere maji spolecnych 5 autoru nebo v jinem pripade, kde je alespon 1 z tech 5 autoru. Meli to krasne grupovani, autoru bylo mas tak 100, knizek tak 1000. Jenze to je n * n * n * n * n mega obri tabulka, ze 100 radku maji pak 10.000.000.000 radku :) Delalo to 7 dni. Cely dotaz jsem pak prepsal tak, ze vyberu seznam id pro kazdou podminku zvlast, pojim pres UNION a pak to zgrupuji pres COUNT(id)>0 pro alespon 1 nebo COUNT(id)==5 pro vsech 5 autoru. Blik, asi 0.2s misto 7 dni :)
 

peter
MS SQL › Prosba o kontrolu kodu z uče…
6. 4. 2017   #215495

Taky to zkusim vysvetlit, ale zkusim to pres tabulky 

id_zam, id_manazer, name
1, null, Lojza
2, null, Tomas
3, 2, Maruska
4, 2, Renata

Lojza a Tomas jsou sefove. Tomas ma sekretarku Marusku, takze Maruska ma vyplneno i id_manazera. A taky ma pod sebou uklizecku.
A ted ty potrebujes SELECTem treba vypsat, seznam sefu a koho maji pod sebou. Ta tabulka by mela vypadat nejak takto

+-------+-----------------+
| name  | zametsnanci     |
+-------+-----------------+
| Lojza |                 |
| Tomas | Maruska, Renata |
+-------+-----------------+

SELECT name FROM zamestnanci WHERE id_manager IS NULL -- seznam sefu

SELECT name FROM zamestnanci WHERE id_manager = 2 -- seznam zamestnancu konkretniho sefa

A ted se to da udelat nekolika zpusoby. Bud to zgrupovat, jedna obri tabulka, elegantni dotaz. Nebo to prilepit jako sloupec. A nebo muzes vybrat id manazeru, osekat to treba na 0-30 a pouzit ten seznam pro vyber zamestnancu. Zpusob zalezi na tom, kolik toho mas v db a kolik toho chces vypisovat. To grupovani bude fungovat, pokud nemas v db moc zaznamu a moc propojeni. Takova bezna firma ma tak do 5 skupin vedeni, ale treba u google by to uz mohl byt casove problem a narocne na db.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý