Autor Zpráva
radozaj
Profil
Ahoj,
potrebujem poradiť so selectom. Mám 3 tabuľky:
osoba(id_osoby)
vlastnost(id_vlastnosti)
a spojenie medzi nimi:
vlastnost_osoby(id_osoby, id_vlastnosti, ma_ju)
Všetky polia sú integer not null, až na ma_ju to je boolean not null. Asi si viete predstaviť náplň takýchto tabuliek.

Moja úloha je vypísať osoby, čo majú naraz všetky požadované vlastnosti, napr. vlastnost 1 = true a zároveň vlastnost 5 = false a zároveň vlastnost 6 = false

Ďakujem za rady.
juriad
Profil
Prakticky to samé je ve zdejších FAQ.
Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení položek mající všechny hledané vlastnosti
radozaj
Profil
Díki, skúsil som to. Mám postgres a vypisuje mi error: function count(integer, boolean) does not exist


Už to fičí. Pozeral som na tú variantu s 2 parametrami...
originál having count(distinct ID_polozky, druh) = 2
správne having count(ID_polozky) = 2

Rovnako to funguje, keď namiesto ID_polozky dám druh, alebo ID_osoby, alebo *.
Ale nefunguje, ak tam dám 2 stĺpce. No nevadí, problém vyriešený.
Ďakujem moc :)
juriad
Profil
radozaj:
Důvod, proč to na Postgresu nefunguje: http://stackoverflow.com/questions/7286266/count-on-distinct-of-several-fields-work-only-on-mysql
A v tom příkladu ta kontrukce opravdu má význam.

Ve vašem případě je pouze jedna dimenze (id_vlastnosti), to zda bude true nebo false se řeší jen na úrovni kritérií (nikdy nenastane vlastnost1 = true and vlastnost1 = false).
Kajman
Profil
Pokud bude jedinečný klíč na kombinaci (ID_polozky, druh), stačí i obyčejné count(*).

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: