sql >> Databáze >  >> RDS >> Mysql

Efektivní externí rozpisování pomocí MySQL a ejabberd

IIUC, tabulka rosterusers je pouze pro čtení z POV vašeho eJabberd serverová aplikace. To by usnadnilo jeho nahrazení view , který vytvoří potřebné 2 řádky z 1 řádku ve vaší vlastní tabulce přátel.

Neznám strukturu vaší vlastní tabulky přátelství, nemohu vám poskytnout úplný kód, ale zde je to, co jsem považoval za 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 poté

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

by vám měl poskytnout 2 řádky, jeden z každé části UNION v zobrazení




  1. Jak mohu v SQL Server zamknout jeden řádek podobným způsobem jako Oracle SELECT FOR UPDATE WAIT?

  2. Zobrazení ALL_PROCEDURES nezobrazuje PROCEDURE_NAME

  3. Nastavte hodnotu AUTO_INCREMENT pomocí proměnné v MySql

  4. Převeďte sloupec varchar na datum v mysql na úrovni databáze