Terminál Fórum https://www.technokrata.hu/forum/ |
|
mysql lekérdezés para... https://www.technokrata.hu/forum/viewtopic.php?f=2&t=18616 |
Oldal: 1 / 1 |
Szerző: | _optikus_ [ szer. jún. 23, 2004 13:21 ] |
Hozzászólás témája: | |
Az AND-al kapcsolatban igazad van, az az egesz select ugy nem is jo. Inkabb probazd ki ezt: Kód: SELECT melosok.mid, melosok.name FROM melosok, user_security WHERE (melosok.mid = user_security.melosok_mid ) and (user_security.security_sid in (SID1,SID2) ) GROUP BY melosok.mid, melosok.name HAVING (count(*) > 1) ; Ha az IN nem menne akkor rakj a helyere egy OR-os megfelelot. |
Szerző: | pggp [ szomb. jún. 12, 2004 21:21 ] |
Hozzászólás témája: | |
A LEFT JOINt is lehet használni, akkor megúszol egy-két WHERE felrételt és talán gyorsabb lesz a lekérdezés. De nekem túl bonyolult, inkább több WHEREt használok. |
Szerző: | LDani [ szomb. jún. 12, 2004 7:47 ] |
Hozzászólás témája: | |
Hoppá! >FROM TERMEK MELOSOK >akkor először legyártja a két tábla kombinációját Ezt tényleg nem tudtam. Erre jók a fórumok. Így már világos számomra hogyan kellene... őszintén szólva ilyen LEFT JOIN jellegű dolgokkal próbálkoztam eddig (nem sok sikerrel) kössz! |
Szerző: | pggp [ pén. jún. 11, 2004 13:36 ] |
Hozzászólás témája: | |
Úgy tűnik nem ismered az SQL parancsok filozófiáját. Pongyolán fogalmazva a következő: Ha több tábla szerepel a lekérdezésben, például: FROM TERMEK MELOSOK akkor először legyártja a két tábla kombinációját (minden TERMEK rekordot minden MELOSOK rekorddal összepárosít). Ez például 1325 generált rekordot jelent, ha 25 rekord van a TERMEK és 53 rekord van a MELOSOK táblában. Ha három tábla van, például: FROM TERMEK MELOSOK DATUM akkor ez 23580 generált rekordot jelent, ha 25 rekord van a TERMEK , 53 rekord van a MELOSOK és 18 rekord van a DATUM táblában. A rekordgenerálás után jön a WHERE-nél megadott feltételek szerinti szűrés. Persze a valóságban nem jön létre egyszerre az összes generált rekord, mert egy egyszerű algoritmussal mindig csak egy generált rekorddal foglalkozik. |
Szerző: | LDani [ pén. jún. 11, 2004 6:59 ] |
Hozzászólás témája: | |
Mivel külön sorban vannak a jogok, ezért AND-el szerintem ne fog működni: pl az OR-t használom és mindenkihez 2 joginformációt tárolok, akkor a lekérdezés során mindenki 2x jelenik meg: az elsősorban az első joggal, a második sorban a második joggal felsorolva ==> ha ezeket ÉSeled soha ne fog egyezőséget találi.... A HAVING nem tudom, hogy mit csinál, de megnézem. Mindenesetre thx a hozzászólást |
Szerző: | _optikus_ [ szer. jún. 09, 2004 12:55 ] |
Hozzászólás témája: | |
Akkor AND-ot rakjal az OR helyere. Ha csak egy peldanyban kell akkor SELECT DISTINCT MELOSOK.name .... es a FROM utani tablaneveket vesszovel valszd el. Ha kell akkor a GROUP BY helyett a HAVINGOT tanulmanyozd. Egyebkent meg valami utanaolvasas nem artana a relacios adatbaziskezelesrol meg szintugy némi SQL olvasnivalo. |
Szerző: | LDani [ hétf. jún. 07, 2004 23:10 ] |
Hozzászólás témája: | Re: mysql lekérdezés para... |
Nem próbáltam ki, de valami hasonlónak kell lennie. Ha egy user mindkét feltételhez kapcsolódik, akkor kétszer fog szerepelni. Ezt ha jól emlékszem a GROUP BY paranccsal lehet kiszűrni. thx a hozzászólást. Az a helyzet, hogy engem pont akor érdekel egy user, ha mindkét feltételnek megfelel. És csak 1 példányban kellene szerepelnie.. üdv.LDani |
Szerző: | pggp [ hétf. jún. 07, 2004 7:19 ] |
Hozzászólás témája: | Re: mysql lekérdezés para... |
LDani írta: hi! A következő problémára szeretnék megoldást találni: Mysql:Adott 3 tábla. Az egyikben felhasználók adatai (minden felhasználónak külön azonosító pl: MID). Egy másik táblában vannak különbőzó típúsú jogok azonosítói (SID) és nevei (SNAME )felsorolva. Egy harmadik tábla 2 oszlopból áll: felh.azonosító, jog azonosító. Azt szertném elérni, hogy 1 lekérdezéssel kiderítsem, hogy melyek azok a felsználók amelyek 2 adott joggal rendelkeznek. Pls segítsen vki, mert egész nap sz*ptam vele, és nagyon nem akar összejönni. thx.LDani táblák: MELOSOK mid: INT name: CHAR(50) SECURITY sid: INT name: CHAR(20) USER_SECURITY usid: INT melosok_mid: INT security_sid: INT Lekérdezés, a két feltételel (SID1, SID2): SELECT MELOSOK.name FROM MELOSOK SECURITY USER_SECURITY WHERE USER_SECURITY.melosok_mid = MELOSOK.mid AND USER_SECURITY.security_sid = SECURITY.sid AND ( SECURITY.sid = SID1 OR SECURITY.sid = SID2 ) Nem próbáltam ki, de valami hasonlónak kell lennie. Ha egy user mindkét feltételhez kapcsolódik, akkor kétszer fog szerepelni. Ezt ha jól emlékszem a GROUP BY paranccsal lehet kiszűrni. |
Szerző: | ene [ vas. jún. 06, 2004 13:02 ] |
Hozzászólás témája: | |
http://dev.mysql.com/doc/mysql/en/JOIN.html |
Szerző: | LDani [ szomb. jún. 05, 2004 21:16 ] |
Hozzászólás témája: | mysql lekérdezés para... |
hi! A következő problémára szeretnék megoldást találni: Mysql:Adott 3 tábla. Az egyikben felhasználók adatai (minden felhasználónak külön azonosító pl: MID). Egy másik táblában vannak különbőzó típúsú jogok azonosítói (SID) és nevei (SNAME )felsorolva. Egy harmadik tábla 2 oszlopból áll: felh.azonosító, jog azonosító. Azt szertném elérni, hogy 1 lekérdezéssel kiderítsem, hogy melyek azok a felsználók amelyek 2 adott joggal rendelkeznek. Pls segítsen vki, mert egész nap sz*ptam vele, és nagyon nem akar összejönni. thx.LDani |
Oldal: 1 / 1 | Időzóna: UTC + 1 óra |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |