Aktív témák

  • LW

    őstag

    Sziasztok.
    Egy kis segítséget szeretnék kérni tőletek. Van egy bonyolultabb fajta lekérdezésem és nem vágom a halmazműveleteket.

    A lekérdezés lekérdezi:
    A : A felhasználó jogait csoportok alapján
    B : A felhasználó extra jogait csoporton kívül
    C : A felhasználó tagadott jogait csoporton kívül

    A végeredmény úgy nézne ki, hogy A (unio) B (különbség) C

    Valahogy így nézne ki, viszont nem találtam hirtelen gulgin mivel lehetne megoldani.

    SELECT rights.rgt_mod_id, rights.rgt_val
    FROM users
    LEFT JOIN mtm_gr_u ON mtm_gr_u.u_id = users.u_id
    LEFT JOIN groups ON mtm_gr_u.gr_id = groups.gr_id
    LEFT JOIN mtm_rgt_gr ON mtm_rgt_gr.gr_id = groups.gr_id
    LEFT JOIN rights ON mtm_rgt_gr.rgt_id = rights.rgt_id
    WHERE users.u_id = 1
    UNION
    SELECT rights.rgt_mod_id, rights.rgt_val
    FROM users
    LEFT JOIN mtm_rgt_u ON mtm_rgt_u.u_id = users.u_id
    LEFT JOIN rights ON mtm_rgt_u.rgt_id = rights.rgt_id
    WHERE users.u_id = 1 and mode = "allow"
    (valami)
    SELECT rights.rgt_mod_id, rights.rgt_val
    FROM users
    LEFT JOIN mtm_rgt_u ON mtm_rgt_u.u_id = users.u_id
    LEFT JOIN rights ON mtm_rgt_u.rgt_id = rights.rgt_id
    WHERE users.u_id = 1 and mode = "deny"

    szerk: ill, ha ugyan az a jog csoporton belül és külön is megvan, hogyan tudom megoldani, hogy csak egyszer jelenjen meg?

Aktív témák