Portál AbcLinuxu, 10. května 2025 20:38
skupina1: user1 skupina2: user1, user2 skupina3: user1 potom budou data selectu z pohledu vypadat takto: user1 skupina1 user1 skupina2 user1 skupina3 user2 skupina2
SELECT uzivatel.* FROM uzivatel, uzivatel_skupina WHERE uzivatel.id = uzivatel_skupina.uzivatel_id AND uzivatel_skupina.skupina_id = ?Případně si z toho můžete udělat pohled a tu druhou podmínku z
WHERE
používat až nad tím pohledem.
JOIN
, protože při spojení tří a více tabulek nějak nikde nevidím levou a pravou tabulku
CREATE DATABASE omg;
CREATE TABLE wtf (id INT NOT NULL); --na pk kašlu, pro teď to není důležitý
tim se vytvoří databáze s právě jednou relací (tabulkou)
ta databáze je relační, protože obsahuje relaci (tabulku)
CREATE VIEW lol AS SELECT id FROM wtf
stále máme relační databázi, která teď obsahuje právě dvě relace (jednu tabulku a jeden pohled)
jestli to není jasný ani teď, tak mi nezbejvá než odkázat na http://en.wikipedia.org/wiki/Relational_database
SELECT u.id, u.username FROM users u INNER JOIN user2group u2g ON u2g.user = u.id WHERE u2g.group = <dana_skupina>Jinak pokud jsou uzivatelska jmena unikatni, nemohou byt rovnou pouzita jako primarni klic? Pak by totiz stacilo:
SELECT username FROM user2group WHERE group = <dana_skupina>
SELECT DISTINCT uzivatel.* FROM uzivatel, uzivatel_skupina WHERE uzivatel.id = uzivatel_skupina.uzivatel_id AND uzivatel_skupina.skupina_id IN (?)
Pokud nezadám "where group=" tak by se měli zobrazit všichi uživatelé, ale jen jednouKdyz bude uzivatel ve dvou skupinach, ma se tedy ve sloupci se skupinou zobrazit jen jedna z nich? Ktera? Nebude jednodussi v takovem pripade selectit primo s tabulky s uzivateli, kdyz vas skupiny v takovem pripade nezajimaji?
SELECT id FROM users WHERE id IN ( SELECT user FROM user2group WHERE group = ? );Tzn. tu podminku where group= nahradit touto a chova se to presne jak potrebujete ;]
select uid from view_u2g where gid='...'Tak dostanete uživatele v dané skupině. Uživatele v ruzných skupinách pak třeba přes operátor "in" s použitím "distinct"
select distinct uid from view_u2g where gid in('gid1','gid2',...)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.