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

Pomoć oko SQL-a

[es] :: Baze podataka :: Pomoć oko SQL-a

[ Pregleda: 2092 | Odgovora: 5 ] > 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 Pomoć oko SQL-a08.07.2010. u 14:35 - pre 117 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.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 2751



+1123 Profil

icon Re: Pomoć oko SQL-a08.07.2010. u 14:45 - pre 117 meseci
Selektuj minimume ( u tvom slučaju ako imaš vrednosti 1 i 2 rezultat treba da bude 1):

Code (sql):
SELECT m.naziv, MIN(gm.insertpermissiondane), MIN(gm.updatepermissiondane), MIN(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));
GROUP BY m.naziv


Ovo je uvek "rule of the thumb" da koristiš min,max ili count funkcije ako hoćeš da izbegneš ponavljanje redova (ako ti nisu bitni)
 
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: Pomoć oko SQL-a08.07.2010. u 16:20 - pre 117 meseci
Hvala na odgovoru.

P.S. Šta znači "rule of the thumb"?

 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 2751



+1123 Profil

icon Re: Pomoć oko SQL-a08.07.2010. u 18:54 - pre 117 meseci
A rule of thumb is a principle with broad application that is not intended to be strictly accurate or reliable for every situation. It is an easily learned and easily applied procedure for approximately calculating or recalling some value, or for making some determination. Compare this to heuristic, a similar concept used in mathematical discourse, psychology and computer science, particularly in algorithm design.

http://en.wikipedia.org/wiki/Rule_of_thumb

Ma to ti je ono kao u elektrotehnici kada obuhvatiš desnom rukom provodnik tako da palac pokazuje smer struje, tada prsti pokazuju smer magnetskog polja.
Preneseno znači: pravilo koje naučiš napamet i ne razmišljaš puno o tome...
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.dynamic.sbb.rs.



+6 Profil

icon Re: Pomoć oko SQL-a09.07.2010. u 01:07 - pre 117 meseci
@djoka_l: Dali možeš da mi objasni kako se dobija onako specifično formatiran kod zavisno od jezika u kom je pisan? Viđao sam to na više mesta ali nigde ne videh neko objašnjenje kako se to radi.
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 2751



+1123 Profil

icon Re: Pomoć oko SQL-a09.07.2010. u 09:30 - pre 117 meseci
Imaš u ovoj temi: http://www.elitesecurity.org/t386874-0#2484566

u "code" tag dodaš ":" pa naziv jezika. Pogledaj tamo koji su sve jezici podržani.
Inače, mogao si da klikneš na "- Citiraj ovu poruku -" tamo gde si video formatiranje, pa bi onda dobio sors poruke u svom odgovoru i sve bi ti bilo jasno
 
Odgovor na temu

[es] :: Baze podataka :: Pomoć oko SQL-a

[ Pregleda: 2092 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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