Forum » Programiranje » SQL poizvedba
SQL poizvedba
piki12 ::
Lep pozdravček vsem,
zanima me kako bi naredil naslednjo poizvedbo v sql pouščite pare šifer tistih jadralcev, ki so doslej že rezervirali isti čoln. V rezultatu naj ne bo pomensko odvečnih vrstic!
Izvleček iz baze:
Jadralec(jid, ime, rating, starost)
Coln(cid, ime, dolzina, barva)
Rezervacija(jid, cid, dan)
Izpiše navadno recimo nekako takole:
21 31
21 65
31 21
Se pravi pomensko nepravilne vrstice. Mogoče kakšna ideja kako to odpravim
zanima me kako bi naredil naslednjo poizvedbo v sql pouščite pare šifer tistih jadralcev, ki so doslej že rezervirali isti čoln. V rezultatu naj ne bo pomensko odvečnih vrstic!
Izvleček iz baze:
Jadralec(jid, ime, rating, starost)
Coln(cid, ime, dolzina, barva)
Rezervacija(jid, cid, dan)
Moja rešitev: select distinct c1.jid,c2.jid from rezervacija c1,rezervacija c2 where c1.cid=c2.cid and c1.jid<>c2.jid ;
Izpiše navadno recimo nekako takole:
21 31
21 65
31 21
Se pravi pomensko nepravilne vrstice. Mogoče kakšna ideja kako to odpravim
mile ::
SELECT c1.dan,c1.cid,c1.jid,c2.jid FROM rezervacija c1,rezervacija c2 WHERE c1.cid=c2.cid AND c1.jid<>c2.jid AND c1.dan=c2.dan GROUP BY c1.dan,c1.cid
eXoo ::
Si bom kar sposodil to temo.
Imam dve tabeli:
Gledalec: id_gledalec, ime, priimek...;
Udelezba: id_udelezba, tk_id_gledalec;
Izpisal bi rad, kateri gledalec je imel največ udeležb (se je največkrat udeležil tekem).
Ideja je bila naslednja :
Problem pa je naslednji. Rad bi izpisal samo prvega. Poskušal sem uporabiti
Hvala za pomoč.
LP.
Imam dve tabeli:
Gledalec: id_gledalec, ime, priimek...;
Udelezba: id_udelezba, tk_id_gledalec;
Izpisal bi rad, kateri gledalec je imel največ udeležb (se je največkrat udeležil tekem).
Ideja je bila naslednja :
SELECT Gledalec.ime, (SELECT COUNT(*) FROM Udelezba WHERE id_gledalec = tk_id_gledalec) AS urejeno FROM Gledalec ORDER BY urejeno DESC;
Problem pa je naslednji. Rad bi izpisal samo prvega. Poskušal sem uporabiti
WHERE ROWNUM = 1;vendar tega ne morem dodati na konec kode, ker mi javi napako. Se pravi, da mora biti nekje pred
ORDER BYkar pa postane problem, ker tabela takrat še ni urejena. Uporabljam Oracle SQL Developer. Pa jasno mi ni tudi to, zakaj ne dela
LIMITnamreč
LIMITje mogoče dodati za
ORDER BYče se ne motim.
Hvala za pomoč.
LP.
Zgodovina sprememb…
- spremenil: eXoo ()
Tody ::
Ja moreš se odločit kaj boš štel :) * pride v poštev ko hočeš vedit koliko je vrstic. Drugače pa count daš v zgornji query. Torej najprej urediš svoje gledalce, torej kdo je bil kdaj na kaki tekmi. Podtem pa ta query naj rata subquery in zgoraj prešteješ udeležbe, ime gledalca pa naj pristane tudi v group by
MrStein ::
(SELECT COUNT(*)
nebi tega count * malo spremenil? v count(1) mogoce?
count(1) in count (*) sta identična. (za Oracle)
Go on , try it.
Si bom kar sposodil to temo.
Imam dve tabeli:
Gledalec: id_gledalec, ime, priimek...;
Udelezba: id_udelezba, tk_id_gledalec;
Izpisal bi rad, kateri gledalec je imel največ udeležb (se je največkrat udeležil tekem).
Ideja je bila naslednja :
SELECT Gledalec.ime,
(SELECT COUNT(*)
FROM Udelezba
WHERE id_gledalec = tk_id_gledalec) AS urejeno
FROM Gledalec
ORDER BY urejeno DESC;
Problem pa je naslednji. Rad bi izpisal samo prvega.
LP.
SELECT * FROM (SELECT Gledalec.ime, (SELECT COUNT(*) FROM Udelezba WHERE id_gledalec = tk_id_gledalec) AS urejeno FROM Gledalec ORDER BY urejeno DESC) WHERE ROWNUM=1;
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Zgodovina sprememb…
- spremenil: MrStein ()
MrStein ::
(SELECT COUNT(*)
nebi tega count * malo spremenil? v count(1) mogoce?
count(1) in count (*) sta identična. (za Oracle)
"What is the difference between count(1) and count(*) in a sql query"
"nothing" - Tom Kyte
vir: http://asktom.oracle.com/pls/asktom/f?p...
(tudi v drugih DBMS sta identična: http://stackoverflow.com/questions/1484... )
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Zgodovina sprememb…
- spremenil: MrStein ()
lebdim ::
mora ratat s tole funkcijo count
kaj pa Gledalec.priimek? zakaj bi te zanimalo samo ime?
kaj pa Gledalec.priimek? zakaj bi te zanimalo samo ime?
Zgodovina sprememb…
- spremenil: lebdim ()
eXoo ::
Sem že rešil, tako da se zahvaljujem.
SELECT Gledalec.ime,Gledalec.priimek,stevilo_izletov FROM (SELECT Gledalec.ime,Gledalec.priimek, COUNT(Udelezba.tk_id_Gledalec) AS stevilo_izletov FROM Gledalec,Udelezba WHERE Gledalec.id_Gledalec = Udelezba.tk_id_Gledalec GROUP BY Gledalec.ime, Gledalec.Priimek ORDER BY stevilo_izletov DESC) Gledalec WHERE ROWNUM = 1;
awy ::
Mene pa zanima kako bi lahko glede na obstoječo bazo od zgoraj:
Jadralec(jid, ime, rating, starost)
Coln(cid, ime, dolzina, barva, relatDolz)
Rezervacija(jid, cid, dan)
izračunali relativno dolžino čolna po formuli: relatDolz=dolzina trenutnega colna/povprecna dolzina vseh colnov v tabeli.
Jadralec(jid, ime, rating, starost)
Coln(cid, ime, dolzina, barva, relatDolz)
Rezervacija(jid, cid, dan)
izračunali relativno dolžino čolna po formuli: relatDolz=dolzina trenutnega colna/povprecna dolzina vseh colnov v tabeli.
urosz ::
Mene pa zanima kako bi lahko glede na obstoječo bazo od zgoraj:
Jadralec(jid, ime, rating, starost)
Coln(cid, ime, dolzina, barva, relatDolz)
Rezervacija(jid, cid, dan)
izračunali relativno dolžino čolna po formuli: relatDolz=dolzina trenutnega colna/povprecna dolzina vseh colnov v tabeli.
SELECT dolzina/(SELECT AVG(dolzina) FROM Coln) as relatDolz FROM Coln;
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprašanjeOddelek: Programiranje | 1107 (706) | MrStein |
» | MySQL group byOddelek: Programiranje | 1006 (834) | vorantz |
» | MySQL procentiOddelek: Programiranje | 1153 (819) | Malik12 |
» | MySQL pomocOddelek: Izdelava spletišč | 1831 (1087) | slosi |
» | MYSQL vprašanjeOddelek: Programiranje | 1786 (1401) | MrBrdo |