IIUC, a tabela
rosterusers
é somente leitura a partir do PDV do seu eJabberd
aplicativo do servidor. Isso tornaria simples, substituí-lo por uma view
, que cria as 2 linhas necessárias de 1 linha em sua própria tabela de amigos. Não conhecendo a estrutura de sua própria tabela de amizade, não posso lhe dar o código completo, mas aqui está o que eu pensei como 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 ...
);
e então
SELECT
username, jid, subscription, ask, server, type
FROM rosterusers
WHERE jid_as_id='[email protected]'
deve fornecer 2 linhas, uma de cada parte do
UNION
na vista