Autor Zpráva
JanMatoušek
Profil
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
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
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
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
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
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 *
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
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 *
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?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0