mysql query osszehasonlitas

Sziasztok,

A kovetkezore keresem a megoldast:

van egy tabla:
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| user_alias | varchar(50) | YES | | NULL | |
| member | varchar(50) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+

benne:
users bela
users andras
users mittomen
users adam

admin adam
admin bela

nobody adam
nobody mittomen

hogyan lehet olyan query-t irni, ahol azzal "user_alias"-al ter vissza, ami az osszes "where in" clause member-t tartalmazza (az nem baj, ha mast is, de oket mindet)?

That a fenti pelda alapjan,
select user_alias from tabla where member in (select member from tabla where user_alias="adm") group by user_alias;
valami ilyesmi, de adja csak a "users" user_alias-al kene visszaternia, a nobody-val nem.
Ha nem fogalmaztam eleg vilagos, csak kerdezz batran.

Hozzászólások

Az ="adm" az ="admin" akar lenni gondolom.(?)

Szerintem próbáld meg érthetőbben megfogalmazni mit szeretnél. Rajtam kifogott az értelmezés, de lehet, ez az én hibám.


SELECT user_alias FROM member WHERE member IN ('andras', 'bela') HAVING COUNT(member)=2 GROUP BY user_alias

Szerk.: Már ha jól értelmezem, hogy azok a csoportok kellenek, amikben minden felsorolt tag benne van. Természetesen a darabszámot a keresett userek számával kell egyenlővé tenni ill. több csoportot is visszaad.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

'valami ilyesmi, de adja csak a "users" user_alias-al kene visszaternia, a nobody-val nem.'

"Ha nem fogalmaztam eleg vilagos, csak kerdezz batran."

En nem erteni kicsi kinai gugli fordit.

"hogyan lehet olyan query-t irni, ahol azzal "user_alias"-al ter vissza, ami az osszes "where in" clause member-t tartalmazza"

A

WHERE IN ('valami', 'valamimas')

egy oszlopra vonatkozik ergo vagy az egyik, vagy a masik lehet annak az oszlopnak az erteke, ergo a feladatnak nem igazan van ertelme.

Nem eppen ertem a kerdest, de lehet hogy a WHERE-re kerdezel akkor az WHERE user_alias LIKE '%users%' OR WHERE user_alias LIKE '%admin%' . (Eleve nem jo a sema, legyszi ne kategorias erosen, es ez is lassabb lesz mintha kulon oszlop lenne a user jogosultsagi szintje).

Ha pedig SELECT-elni akarsz akkor meg van a MYSQL-ben SUBSTRING, csak a ' ' utani reszt akarhatod bizonyara lekerdezni:

SELECT SUBSTRING(user_alias FROM (POSITION(' ' in user_alias + 1))) as nickname FROM ...(tobbit tudod)

a nickname oszlop itt olyan lesz hogy:
bela
andras
...
mittomen

Melyik volt a kerdesed? Az is lehet hogy egyik sem. ;)

"A WHERE IN ('valami', 'valamimas') egy oszlopra vonatkozik ergo vagy az egyik, vagy a masik lehet annak az oszlopnak az erteke, ergo a feladatnak nem igazan van ertelme."

Ezt ebben hol lattad?
select user_alias from tabla where member in (select member from tabla where user_alias="admin") group by user_alias;

Le akarom kerni az osszes user_alias-t amiben minden olyan member benne van aki a subqueryben, ami ugyan csak member-eket ad vissza. A kerdes csak annyi, hogy lehet elerni, hogy csak azokkal a user_alias ertekekkel terjen vissza amiben az osszes subquery result benne van.

mi hárman nézzük de nem értjük mit szeretnél :D
TIPP: kilistázni azoknak az összes "jogosultságát" akik benne vannak az adminba?

Reload:

1) van egy: select member from table where user_alias="adm";
2) Azt a query-t keresem, ami azzal/azokkal "user_alias"-okkal (first column) ter vissza amiben/amikben az 1-es pontban kilistazott userek szerepelnek(Az hogy mas is szerepel ugyan abban a user_alias-ban nem szamit). A kitetel, hogy mindegyik legyen benne, az hogy tobb is van nem erdekel.
Tehat ennek a gondolatnak a nyoman, a "nobody" user_alias-t nem kell visszakapnom eredmenyul, a users csoportot pedig igen.
Got it?


SELECT user_alias FROM member WHERE member IN (SELECT m2.member FROM member m2 WHERE user_alias='admin') GROUP BY user_alias HAVING COUNT(member)=(SELECT COUNT(*) FROM member m3 WHERE m3.user_alias='admin')

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Erdekes, valaki tudott megis megoldast szallitani...Nem mondom, hogy nem korulmenyesen irtam le, de tobbszori nekifutasra, neked megsem sikerult megerteni, meg masnak igen es megoldast is irt ra. De mivel a megoldas alapjan sem ertetted meg az alap feltevest, igy ertelmetlen is lenne belemenni :(

Így a hepiend után azért hadd tegyem azt a konstruktív javaslatot, hogy ha legközelebb hasonló kérdésed van, képen próbáld meg illusztrálni (pl. előtte-utána dimenziókban)!

Közhely, hogy egy kép felér tízezer szóval, de akad a szavaknak olyan elrendezése, hogy azok messze nagyobb mennyisége sem elégíti ki ezt az egyenletet.