IIUC, tabela rosterusers
jest tylko do odczytu z POV twojego eJabberd
aplikacja serwera. Ułatwiłoby to zastąpienie go view
, który tworzy potrzebne 2 wiersze z 1 wiersza we własnej tabeli znajomych.
Nie znając struktury twojej własnej tabeli przyjaźni, nie mogę podać pełnego kodu, ale oto, co pomyślałem o pseudo-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 ...
);
a potem
SELECT
username, jid, subscription, ask, server, type
FROM rosterusers
WHERE jid_as_id='[email protected]'
powinien dać 2 wiersze, po jednym z każdej części UNION
w widoku