Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa SQL-om

[es] :: MySQL :: Problem sa SQL-om

[ Pregleda: 2024 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Problem sa SQL-om08.07.2010. u 14:25 - pre 168 meseci
Imam sledeću proceduru:

Code:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `SP_GET_USER_PERMISSION`(IN username varchar(15), IN meniid int)
BEGIN
set names utf8;
select m.naziv, gm.insertpermissiondane, gm.updatepermissiondane, gm.deletepermissiondane
from (((((korisnik k inner join grupa_korisnika gk on k.korisnikid=gk.korisnikid) left join
    grupa g on g.grupaid=gk.grupaid) inner join
    grupa_meni gm on gm.grupaid=g.grupaid) inner join
    meni m on m.meniid=gm.meniid))
where ((k.username=`username`) and (gm.meniid=meniid));
END


Pogled na model je sledeći:




Ono što dobijam kao rezultat izvršavanja procedure je:



E sada problem je sledeći. Ja ovde dobijam 2 reda a treba mi jedan. U jednom redu imam za delete permission 1 (što znači da ima pravo da briše rekorde u određenom meniju), a u drugom imam delete permission 2 (što znači da dati korisnik nema pravo da briše rekorde u određenom meniju). Imam dva reda zato što sam ovog korisnika stavio u dve različite grupe kojima se prava pristupa preklapaju. Znači meni treba da kada imam 1 i 2 recimo za delete permission, dobijem u izlazu 1 (korisnik je učlanjen u jednu grupu koja nema pravo pristupa, ali je uključen i u drugu grupu koja ima pravo pristupa tako da mi treba podatak da taj korisnik ima pravo pristupa).

Baza je mysql 5.1.
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa SQL-om08.07.2010. u 14:39 - pre 168 meseci
mozes da uradis order by to polje sa permission-om i onda limit 1 .. tako dobijas sigurno samo jedan red i dobijas najmanju vrednost 1 ako ima ili 2 ako nema, ako ima 2 kao u primeru i 1 i 2 vratice 1 posto si tako sortirao ...


 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa SQL-om08.07.2010. u 14:50 - pre 168 meseci
biske86 sram te bilo - postuješ u dve teme isto pitanje.

Evo ti referenca na moj odgovor u drugoj temi: http://www.elitesecurity.org/t404475-0#2644178
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem sa SQL-om08.07.2010. u 15:07 - pre 168 meseci
ako predpostavimo da mu je username unique key (iako se ne vidi iz modela) te ovaj ceo upit treba da vrati samo jedan red onda nema svrhe da radi group by posto je order by + limit mnogo brzi (i pravi manje temporary tabela)
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Problem sa SQL-om08.07.2010. u 16:17 - pre 168 meseci
Hvala obojici na brzom odgovoru, spasli ste me.

@djoka_l
Temu sam postavio u mysql zato što mi se problem javio u radu sa mysql bazom. Pored toga dosta sam ranije bio aktivan na podforumu baze podataka i znam da ima dosta ljudi koji odlično poznaju sql pa sam postavio temu i tamo. Izvinjavam se ako je to protivno pravilima foruma.
Nisam isprobao ali mislim da ovo rešenje koje je postavio bogdan.kecman ne bi radilo zato što imam tri kolone koje su mi bitne (insert, update, delete) sa mogućim vrednostima 1 i 2. Tako da je moguće dosta različitih kombinacija. Ovo rešenje koje je on postavio radilo bi ako mi je u igri samo jedna kolona. Ali ne bi radilo ako u jednom redu imam 1, 2, 1 za insert, update, delete a u drugom redu 2, 1, 2.

U svakom slučaju stavio sam rešenje koje je predložio djoka_l i radi kako se očekuje.
Hvala još jednom.
 
Odgovor na temu

[es] :: MySQL :: Problem sa SQL-om

[ Pregleda: 2024 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.