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

Pomoc oko 'jednostavnog' upita

[es] :: MySQL :: Pomoc oko 'jednostavnog' upita

[ Pregleda: 3945 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Prika

Član broj: 20692
Poruke: 43
*.neobee.net.

ICQ: 229087266


Profil

icon Pomoc oko 'jednostavnog' upita 05.01.2005. u 18:54 - pre 234 meseci
Stao mi je mozak kod jednog upita koji bi trebao biti jednostavan. Problem je sledeci:
Imam dve tabele: oblasti i dozvole. U jednoj se nalaze podaci o oblastima vesti (sport, vreme, vesti...), kolone su oblast_id, ime_oblasti i objasnjenje .U drugoj tabeli su dozvole autora. Tu se nalaze dve kolone: autor i ime_oblasti.
Kako glasi upit za ispis samo onih oblasti koje nisu dodeljene odredjenom autoru, a nalaze se u tabeli oblasti? Koristim MySQL bazu podataka.
Hvala!
 
Odgovor na temu

GoranVucicevic
Novi Sad

Član broj: 28045
Poruke: 66
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: Pomoc oko 'jednostavnog' upita 05.01.2005. u 19:19 - pre 234 meseci
Ne radim na MySQL-u, ali je valjda:
Code:

SELECT oblast_id, ime_oblasti, objasnjenje 
FROM oblasti 
WHERE ime_oblasti NOT IN 
(SELECT ime_oblasti FROM dozvole WHERE autor = 'odredjen autor')

Vidi: GoranVuc #4934
 
Odgovor na temu

Prika

Član broj: 20692
Poruke: 43
*.neobee.net.

ICQ: 229087266


Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 01:04 - pre 234 meseci
Ideja je prava, ali ....
MySQL mi izbacuje grešku 1064 syntax error!
Znači podržava subquery-je, ali mi javlja da se greška nalazi baš u tom subquery-ju. Kad pokušam da ga izvršim samostalno sve je ok!
UPIT IZGLEDA OVAKO:
SELECT * FROM oblast where ime_oblasti NOT IN ( SELECT ime_oblasti FROM dozvole_autora WHERE autor='mica');
Greška nije u pisanju jer sam pokušao da ručno navodim imena oblasti, i tad radi.
Odvojeno radi, a zajedno ne! ZAŠTO?
Zna li neko da uradi ovo sa JOIN naredbom, ako već ovako ne ide?
 
Odgovor na temu

dragancesu
subotica

Član broj: 38340
Poruke: 2189
*.voban.co.yu.



+73 Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 07:23 - pre 234 meseci
Tvoj upit

SELECT * FROM oblast where ime_oblasti NOT IN ( SELECT ime_oblasti FROM dozvole_autora WHERE autor='mica');

malo izmeni, ko sto ti covek napisa, umesto * navedi naziv polja, ovako je sql zbunjen jer dobije nekoliko polja da uporedjuje s jednim, to nije korektno

Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
 
Odgovor na temu

Prika

Član broj: 20692
Poruke: 43
*.neobee.net.

ICQ: 229087266


Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 10:47 - pre 234 meseci
Probao sam i ovo,ali ne vredi!
@ dragancesu
Mislim da nije to u pitanju jer mi se zvezdica nalazila kod izdvajanja (ispisa) rezultata, a kod subquery-ja izdvajam samo to određeno polje ime_oblasti koje treba da se poredi sa kolonom u glavnom query-ju.
Kod greške mi prijavljuje da je problem samo u subquery-ju. Tako da glavni query ne stigne da obradi. To sam proverio, jer sam jednom namerno napravio grešku u glavnom query-ju, da bih video koji je redosled izvršavanja.
 
Odgovor na temu

GoranVucicevic
Novi Sad

Član broj: 28045
Poruke: 66
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 10:56 - pre 234 meseci
Ne znam da li je to problem, ali vidim da imas jedan SPACE karakter pre SELECT naredbe u podupitu, a ako nije to onda probaj sa JOIN:
Code:

SELECT oblasti.oblast_id, oblasti.ime_oblasti, oblasti.objasnjenje 
FROM oblasti 
INNER JOIN 
(SELECT DISTINCT ime_oblasti FROM dozvole WHERE autor <> 'odredjen autor') AS OstaleOblasti 
ON oblasti.ime_oblasti = OstaleOblasti.ime_oblasti

Vidi: GoranVuc #4934
 
Odgovor na temu

Prika

Član broj: 20692
Poruke: 43
*.neobee.net.

ICQ: 229087266


Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 14:47 - pre 234 meseci
Jednostavno neće!
Opet prijavljuje da je greška u podupitu u zagradi. Što se tiče onog SPACE-a... pokušao sam i sa njim i bez njega, velikim slovima, malim slovima ... NE REAGUJE!
Polako počinje da me nervira, a jako mi treba.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 14:57 - pre 234 meseci
Copy paste ovde: 1) upit koji pokušavaš da izvršiš 2) grešku koju ti javlja
 
Odgovor na temu

GoranVucicevic
Novi Sad

Član broj: 28045
Poruke: 66
*.dialup.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 18:11 - pre 234 meseci
Jesi proverio u svom upitu da li si tacno napisao nazive tabela i polja, posto si u postavljanju topica naveo da se tabele zovu "oblasti i dozvole", a kasnije u svom kodu ih navodis kao "oblast i dozvole_autora"?

Inace, kad smo vec kod toga, bilo bi dobro da ljudi koji se ovde obracaju za pomoc odvoje bar onoliko vremena i truda za opis problema, koliko mi sto zelimo da pomognemo potrosimo na resavanje.
Vidi: GoranVuc #4934
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Pomoc oko 'jednostavnog' upita 06.01.2005. u 21:14 - pre 234 meseci
Citat:
GoranVucicevic: Inace, kad smo vec kod toga, bilo bi dobro da ljudi koji se ovde obracaju za pomoc odvoje bar onoliko vremena i truda za opis problema, koliko mi sto zelimo da pomognemo potrosimo na resavanje.

Očigledno im odgovor nije dovoljno bitan.

Evo ja ne bejah lenj pa malo protrebih uputstvo za MySQL. U jednom delu, u vezi toga što MySQL ne podržava ugnježđene select-ove, kaže:
Citat:
The queries:

SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 where table1.id=table2.id);

Can be rewritten as:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL

Dakle, preformuliši tvoj upit u ovaj sa LEFT JOIN-om i trebalo bi da radi.
 
Odgovor na temu

Prika

Član broj: 20692
Poruke: 43
*.neobee.net.

ICQ: 229087266


Profil

icon Re: Pomoc oko 'jednostavnog' upita 07.01.2005. u 00:27 - pre 234 meseci
1: U početku nisam mislio da će se sve ovo ovoliko zakomplikovati, pa sam skratio ime tabele dozvole_autora u dozvole da ne bi komplikovali. A što se tiče tabele oblast, ono 'i' je bila greška kojom nisam hteo da vas smaram, jer sam je ispravljao dok sam pokušavao da odradim upite.
2: Preformulisan upit izgleda ovako:
SELECT oblast.* FROM oblast LEFT JOIN dozvole_autora ON oblast.ime oblasti=dozvole_autora.ime_oblasti WHERE dozvole_autora.autor IS NULL;
Kao rezultat dobijem oblasti koje nisu dodeljene ni jednom autoru. Ako nakon klauzule ... IS NULL dodam OR dozvole_autora.autor<>'mica';, dobijem i oblasti koje su dodeljene drugima. Znači ako tri autora imaju dozvolu nad vestima, vesti mi se ponove tri puta kao odgovor.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+710 Profil

icon Re: Pomoc oko 'jednostavnog' upita 07.01.2005. u 08:04 - pre 234 meseci
Code:
select * from oblasti o
left join dozvole d on d.oblast_id = o.oblast_id and d.autor = 'mica'
where d.autor is null

Dođeš pivo.

BTW, moderatori, ovo treba u MySQL podforum pošto je baš MySQL specific problem
 
Odgovor na temu

Prika

Član broj: 20692
Poruke: 43
*.neobee.net.

ICQ: 229087266


Profil

icon Re: Pomoc oko 'jednostavnog' upita 07.01.2005. u 18:05 - pre 234 meseci
Dođem ti i gajbu piva!!! Ma svima dođem po gajbu,a tebi dve. Nisi ni svestan koliki si mi problem rešio.
HVALA SVIMA KOJI SU MI POMOGLI!
 
Odgovor na temu

[es] :: MySQL :: Pomoc oko 'jednostavnog' upita

[ Pregleda: 3945 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

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