IIUC, таблицата rosterusers
е само за четене от POV на вашия eJabberd
сървърно приложение. Това ще направи лесно да го замените с view
, което създава необходимите 2 реда от 1 ред в собствената ви таблица с приятели.
Без да знам структурата на вашата собствена таблица за приятелство, не мога да ви дам пълния код, но ето какво смятах за псевдо-SQL
CREATE VIEW rosterusers AS SELECT * FROM (
SELECT
selfuser.name AS username,
frienduser.jid AS jid,
-- ....,
selfuser.jid AS jid_as_id
FROM
users AS selfuser
INNER JOIN friendships ON ....
INNER JOIN users AS frienduser ON ...
UNION SELECT
frienduser.name AS username,
selfuser.jid AS jid,
-- ....,
frienduser.jid AS jid_as_id
FROM
users AS selfuser
INNER JOIN friendships ON ....
INNER JOIN users AS frienduser ON ...
);
и след това
SELECT
username, jid, subscription, ask, server, type
FROM rosterusers
WHERE jid_as_id='[email protected]'
трябва да ви даде 2 реда, по един от всяка част на UNION
в изгледа