Autor | Zpráva | ||
---|---|---|---|
xpt26 Profil |
#1 · Zasláno: 3. 10. 2010, 21:18:50
Zdravím mám dva dotazy, tím delším vybírám články, které jsem napsal já, pak články kde jsem buď přítel já s ním nebo on se mnou. A tím kratším vybírám, uživatele, které ignoruji. Pomocí php pak nevypisuji články, když je c.author_id stejný jako někdo koho ignoruji.
A teď můj problém, když někoho odstraním z ignorace, tak bych chtěl vypsat jen ty články, které jsou starší jak čas odebrání autora z ignor listu ... (select c.old, c.text, c.id_s, u.nick, u.real_name, u.surname, u.id, u.avatar, u.gender, c.author_id, c.on_wall_id, u2.nick as nick2, u2.real_name as real_name2, u2.surname as surname2, u2.id as id2, u2.gender as user_gender2, c.cas, c.time, c.date, u3.nick as nick3, u3.real_name as real_name3, u3.surname as surname3, u3.id as id3, u3.gender as user_gender3, c.from_user_id, u.active, u2.active as active2, u3.active as active3 from cms_clanky c join cms_users u on u.id = c.author_id join cms_users u2 on c.on_wall_id = u2.id join cms_friends f on c.author_id = f.friend_user_id AND f.active_friend = '1' join cms_users u3 on c.from_user_id = u3.id where f.my_user_id = '1' AND c.old = '0' AND c.datetime > f.datetime_of_activate LOCK IN SHARE MODE ) union (select c.old, c.text, c.id_s, u.nick, u.real_name, u.surname, u.id, u.avatar, u.gender, c.author_id, c.on_wall_id, u2.nick as nick2, u2.real_name as real_name2, u2.surname as surname2, u2.id as id2, u2.gender as user_gender2, c.cas, c.time, c.date, u3.nick as nick3, u3.real_name as real_name3, u3.surname as surname3, u3.id as id3, u3.gender as user_gender3, c.from_user_id, u.active, u2.active as active2, u3.active as active3 from cms_clanky c join cms_users u on u.id = c.author_id join cms_users u2 on c.on_wall_id = u2.id join cms_friends f on c.author_id = f.my_user_id AND f.active_friend = '1' join cms_users u3 on c.from_user_id = u3.id where f.friend_user_id = '1' AND c.old = '0' AND c.datetime > f.datetime_of_activate LOCK IN SHARE MODE ) union (select c.old, c.text, c.id_s, u.nick, u.real_name, u.surname, u.id, u.avatar, u.gender, c.author_id, c.on_wall_id, u2.nick as nick2, u2.real_name as real_name2, u2.surname as surname2, u2.id as id2, u2.gender as user_gender2, c.cas, c.time, c.date, u3.nick as nick3, u3.real_name as real_name3, u3.surname as surname3, u3.id as id3, u3.gender as user_gender3, c.from_user_id, u.active, u2.active as active2, u3.active as active3 from cms_clanky c join cms_users u on c.author_id = u.id join cms_users u2 on c.on_wall_id = u2.id join cms_users u3 on c.from_user_id = u3.id where c.author_id = '1' AND c.old = '0' LOCK IN SHARE MODE ) order by id_s desc SELECT ignored_user_id FROM cms_ignore WHERE who_user_id = '1' |
||
Kajman_ Profil * |
#2 · Zasláno: 3. 10. 2010, 22:28:01
Do prvních dvou dotazů spojených unionem by třeba šlo něco jako
LEFT JOIN cms_ignore i ON i.who_user_id = '1' AND i.ignored_user_id = f.friend_user_id AND (i.ignore_to is null or i.ignore_to<c.datetime) a do where přidat AND i.who_user_id is null |
||
xpt26 Profil |
#3 · Zasláno: 4. 10. 2010, 00:14:52
O děkuji moc, funguje to!
|
||
Časová prodleva: 3 dny
|
|||
xpt26 Profil |
#4 · Zasláno: 6. 10. 2010, 23:30:12 · Upravil/a: xpt26
Zdravím ještě bych to trošičku zkomplikoval tím, že by se statusy ignorovali jen když i.active_ignore = '1' a když se tato hodnota změní na 0 tak aby se vypsali články s původní podmínkou i.ignore_to < c.datetime
// EDIT : není už třeba, vyřešeno |
||
Časová prodleva: 14 let
|
0