Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 2.947 pregleda

Najnovija ↓

Problem sa SQL-om 08.07.2010. u 15:25 · pre 198 meseci #1
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.
Potpis
http://biske.rs
Re: Problem sa SQL-om 08.07.2010. u 15:39 · pre 198 meseci #2
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 ...

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Problem sa SQL-om 08.07.2010. u 16:07 · pre 198 meseci #4
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)
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Problem sa SQL-om 08.07.2010. u 17:17 · pre 198 meseci #5
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.
Potpis
http://biske.rs
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme