Autor Zpráva
xpt26
Profil
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 *
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
O děkuji moc, funguje to!
xpt26
Profil
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

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