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.
- 2179 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Nem csak a tiéd: de nem akartam első lenni a "kötözködéssel".
Amit kisejtek a mondatzagyvalékból, az annyira egyszerű dolgot kérdezne, hogy valószínűleg nem arról van szó - de akkor nem tudom, hogy miről.
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
'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 hozzászóláshoz be kell jelentkezni
"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.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
Tadaaaa....Ennyi.
Halas koszonet!!
- A hozzászóláshoz be kell jelentkezni
Épp akartam javasolni az IN használatát. :D
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
Biztos bennem van a hiba.., bár ha ugyanazt a mondatot leírod még egyszer, az nem egy érthetőbb magyarázat:-).
Igazából azt nem értem, hogy ha az Ádám user benne van a nobody user_alias-ban is és az admin-ban, is, akkor nekem a nobody alias is teljesíti a feltételt.
- A hozzászóláshoz be kell jelentkezni
"Biztos bennem van a hiba"
Biztos...
"A kitetel, hogy mindegyik legyen benne, az hogy tobb is van nem erdekel. "
A nobody teljesiti a feltetelt, miszerint az admin user_alias-hoz tartozo member-ek MINDEGYIKE szerepel benne?
En nem mondom, hogy nem kacifantos a kerdes...de azert...
- A hozzászóláshoz be kell jelentkezni
Sokszor elolvastam, de nem vagyok biztos benne,hogy jól értem.
Ha mégis jól értem, akkor nem bonyolítanám el nagyon:
SELECT t1.member FROM tabla as t1, tabla as t2
WHERE t1.user_alias = 'admin'
AND t2.user_alias = 'users'
AND t1.member = t2.member
- A hozzászóláshoz be kell jelentkezni
Hagyjad, mar a semat is rosszul irta fel.
- A hozzászóláshoz be kell jelentkezni
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 :(
- A hozzászóláshoz be kell jelentkezni
Í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.
- A hozzászóláshoz be kell jelentkezni
Teljesen igazad van, utolag jutott eszembe, hogy csak siman halmazokkent fel kellett volna rajzolnom...
- A hozzászóláshoz be kell jelentkezni
Na, közben rájöttem, hogy nem ez volt a kérdés.. :)
- A hozzászóláshoz be kell jelentkezni