Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Effiziente externe Dienstplanung mit MySQL und ejabberd

IIUC, die Tabelle rosterusers ist aus dem POV Ihres eJabberd schreibgeschützt Server-App. Dies würde es einfach machen, es durch eine view zu ersetzen , das erzeugt die benötigten 2 Zeilen aus 1 Zeile in deiner eigenen Freundestabelle.

Da ich die Struktur Ihrer eigenen Freundschaftstabelle nicht kenne, kann ich Ihnen nicht den vollständigen Code geben, aber hier ist, was ich mir als Pseudo-SQL vorgestellt habe

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 ...
);

und dann

SELECT
    username, jid, subscription, ask, server, type
FROM rosterusers
WHERE jid_as_id='[email protected]'

sollte Ihnen 2 Zeilen geben, eine von jedem Teil der UNION in der Ansicht