Autor | Zpráva | ||
---|---|---|---|
JanMatoušek Profil |
#1 · Zasláno: 12. 10. 2015, 11:49:58
Ahoj mám takový dotaz, který se mi špatně popisuje, zkusím dát příklad, co mám a co potřebuji:-)
mám tabulku A kde jsou id 1 2 3 4 5 6 pak mám vazební tabulku A_x_A, ta určuje vazby mezi tabulkou A. Označuje příbuzné položky tedy takto: id id2 1 2 2 1 1 3 3 1 4 5 5 4 4 6 6 4 potřeboval bych z toho dostat pouze 2 záznamy 1 a 4, protože 2,3 patří k 1 a 5,6 ke 4 nevadí mi, ani když dostanu záznamy náhodně, třeba 1 a 5, ale stále bych potřeboval dostat vždy pouze tu jednu skupinu příbuzných položek (ty zbylé položky si pak již lehce dohledám). Doufám, že je to alespoŇ trošku jasné. Už tady nad tím důmám nějakou chvilku, a stále jsem na to nepřišel:-) Pokud někdo poradí, tak moc děkuji:-) |
||
mimochodec Profil |
#2 · Zasláno: 12. 10. 2015, 11:55:31
JanMatoušek:
> potřeboval bych z toho dostat pouze 2 záznamy > 1 a 4, protože 2,3 patří k 1 a 5,6 ke 4 Tomu nerozumím. 1, 4, "2,3", co to je za čísla? Jednotlivé hodnoty, hodnoty těch párů, nebo pořadí v té tabulce? Můžeš to popsat líp? |
||
tiso Profil |
#3 · Zasláno: 12. 10. 2015, 11:58:30
SELECT AA.id FROM A JOIN A_x_A AA ON A.id = AA.id GROUP BY AA.id HAVING COUNT(AA.id2) > 1 |
||
Kajman Profil |
JanMatoušek:
Na jakém databázovém systému? (Pokud nebude databáze podporavt hiearchické dotazy, tak sql nebude stačit.) |
||
_es Profil |
#5 · Zasláno: 12. 10. 2015, 12:43:55
JanMatoušek:
Vyzerá to skôr na nevhodný návrh. Asi by bolo lepšie si na tie skupiny vytvoriť extra tabuľku a väzobnú tabuľku: id skupiny | id položky 0 | 1 0 | 2 0 | 3 1 | 4 1 | 5 1 | 6 |
||
JanMatoušek Profil |
#6 · Zasláno: 12. 10. 2015, 12:57:08
tiso: to mě první napadlo, ale group to jen nevyřeší
_es: konkrétně jde o produkty a vazební tabulka jsou vazby na velikosti. (každý produkt má jednu velikost a je to takhle propojené) Osobně bych to také řešil úplně jinak, ale nemám možnost to změnit, protože na tom již běží systém a překopání by nikdo nezaplatil. řeší se to tak, že je jeden produkt vždy označen jako hlavní, jenže právě nastal problém, že jsou označené například 3 produkty jako hlavní, což je blbost. Kajman: běží to na MYSQL pokud to nepůjde, tak to vyřeším přes script a budu se dotazovat v cyklu. Tak vím, jak bych to řešil, jen to bude náročnější na počet dotazů, ale to zas asi tak vadit nebude. |
||
tiso Profil |
#7 · Zasláno: 12. 10. 2015, 13:05:01
JanMatoušek: „to mě první napadlo, ale group to jen nevyřeší“
Ten dotaz vrátil čo si chcel pre ten príklad. Takže príklad je zlý? Daj iný, alebo lepšie vysvetli čo potrebuješ. |
||
JanMatoušek Profil |
vypadá to, že to asi jednoduše nepůjde, tak to vyřeším prostě vytažením všeho co potřebuji a jestli už jsem skupinu řešil, nebo ne, rozeznám na straně scriptu. Asi to bude jednodušší.
tiso: No takhle ten dotaz vrátí id 1 až 6. |
||
juriad_ Profil * |
#9 · Zasláno: 12. 10. 2015, 13:09:17
JanMatoušek:
Relacni databaze nejsou urcene na grafove operace. Ty v tomto pripade chces identifikovat komponenty grafu (a to jeste nevime, zda se bavime o orientovane nebo neorientovanem grafu). Slo by to udelat nejakou databazovou procedurou, ktera by simulovala BFS (postupne updatovani znacek ve vrcholech) mimochodec: Tabulka A jsou vrcholy grafu, tabulka A_x_A jsou hrany grafu. Pokud znas teorii grafu, je tato informace postacujici. |
||
tiso Profil |
#10 · Zasláno: 12. 10. 2015, 13:22:27
JanMatoušek: „No takhle ten dotaz vrátí id 1 až 6.“
Vážne? |
||
JanMatoušek Profil |
jo máš pravdu, ale také to není 100% pokud bude jen jedna vazba, tak to fungovat nebude.
každopádně díky za návrhy, už to mám skoro vyřešené přes script. v mém případě to bude dostačující řešení. |
||
juriad_ Profil * |
#12 · Zasláno: 12. 10. 2015, 13:37:19
JanMatoušek:
Pokud mas graf 1-2, 2-3, 3-4, 4-5 , co to ma vratit?
2 a 4? Nebo jakoukoli jednu z hodnot? V prvnim pripade (kdy chces minimalizovat pocet vracenych zaznamu) jde dokonce o ulohu vrcholoveho pokryti, coz je NP uplne v obecnem pripade. Jak tve grafy vlastne vypadaji? |
||
Časová prodleva: 9 let
|
0