Diskuze: Jak vybrat uživatele, kteří nejsou moji přátelé?
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
chápu dobře, že chceš uživatele, na které nemáš přímou vazbu?
SELECT * FROM users u
LEFT JOIN friends f_to ON u.ID = f_to.RequestIDTo
LEFT JOIN friends f_from ON u.ID = f_from.RequestIDFrom
WHERE u.ID != 1
AND f_to.RequestIDFrom != 1
AND f_from.RequestIDTo != 1
AND f_to.Accept = true
AND f_from.Accept = true
GROUP BY u.ID
je to trochu neohrabané, ale mohlo by to fungovat
Chci uživatele, ke kterému nemám žádnou vazbu, ale i tak díky za snahu
Ale i to co jsi udělal se dá použít, jen nesmí být záznam můj přítel, což se mi u nějakých záznamů stalo.
takže uživatelé, které to vyplivne, nemáš být ty a tvoji přímí přátelé? přátelé jejich přátel to mohou být, nebo to mají být uživatelé, na které nemáš vůbec žádnou vazbu?
Uživatelé, které to vyplivne nemám být já ani moji přímí přátelé,
ale přátelé jejich přátel to být mohou, nebo to mají být tedy
uživatelé na které nemám vůbec žádnou vazbu. Takto
pokud ty jsi 1 a jsi přítel 2 a 2 je přítel 3, ale 3 není přítel 1,
tak ty nemáš přímou vazbu na 3, ale nepřímou. Pokud by tu ještě bylo id
4, které není přítel s nikým, tak s ním nemáš žádnou vazbu.
tak jsem to myslel
pokud ty jsi 1 a jsi přítel 2 a 2 je přítel 3, ale 3 není přítel 1,
tak ty nemáš přímou vazbu na 3, ale nepřímou. Pokud by tu ještě bylo id
4, které není přítel s nikým, tak s ním nemáš žádnou vazbu.
tak jsem to myslel
Ano, ale je možnost, že se již kamarádím s ID 3, ale když se s ním
kamarádím, tak ho již nechci vypisovat, ale jinak takhle
Tak dobrý, nakonec jsem ještě s pomocí stackoverflow vymyslel to co jsem
potřeboval, dyžtak kód házím sem, ale i tak, díky za snahu
SELECT * FROM users u WHERE
u.ID NOT IN (SELECT RequestIDTo FROM friends where RequestIDFrom=1 OR RequestIDTo = 1) AND
u.ID NOT IN (SELECT RequestIDFrom FROM friends where RequestIDFrom=1 OR RequestIDTo = 1)
A nebylo by jednodussi pouzit tam union? Jako, pro rychlost zpracovani.
id NOT IN (
SELECT ...
UNION
SELECT ...
)
To zadani mi neni moc jasne.
Díky za radu, taky bych vám oboum rád nějak poděkoval, chtělo by to asi
něco jako víc řešení, tady na itnetworku
Zobrazeno 12 zpráv z 12.