IIUC, bảng rosterusers
là chỉ đọc từ POV của eJabberd
của bạn ứng dụng máy chủ. Điều này sẽ làm cho nó trở nên đơn giản, thay thế nó bằng một view
, điều đó tạo ra 2 hàng trong số 1 hàng cần thiết trong bảng bạn bè của riêng bạn.
Không biết cấu trúc của bảng tình bạn của riêng bạn, tôi không thể cung cấp cho bạn mã đầy đủ, nhưng đây là những gì tôi nghĩ là SQL giả
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 ...
);
và sau đó
SELECT
username, jid, subscription, ask, server, type
FROM rosterusers
WHERE jid_as_id='[email protected]'
sẽ cung cấp cho bạn 2 hàng, một hàng từ mỗi phần của UNION
trong Chế độ xem