Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Serverske aplikacije i baze podataka

Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion...
MySQL, PostgreSQL, MSQL, Oracle...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 3.9.2015, 8:00   #1
romanah
Novi član
 
Član od: 1.9.2015.
Poruke: 1
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom SQL upiti - Pomoć

Molim pomoć oko ovih zadataka... Rješavala sam, ali nisam sigurna da sam dobro riješila. Prvi zadatak možda radi, a drugi ne rade najbolje, najteži je četvrti zadatak. Svaka pomoć je dobro došla! Hvala.

Tablice:
ORG (SIFRA_ORG, NAZIV_ORG, ADRESA)
PUT (SIFRA_PUT, SIFRA_ORG, POLAZISTE, ODREDISTE, PRIJEVOZ, TRAJANJE, CIJENA, PRETHODI)

1. Za svako polazište iz Zagreba prikazati odredište, vrstu prijevoza i naziv organizatora.

SELECT p.odrediste, p.prijevoz, o.naziv_org
FROM org AS o INNER JOIN put AS p
ON o.sifra_org=p.sifra_org
WHERE p.polaziste='Zagreb'

2. Prikazati sve podatke o organizatorima koji imaju barem 3 putovanja koja traju duže od 2 noćenja.

SELECT o.*, COUNT (o.naziv_org) AS broj_putovanja
FROM org AS o INNER JOIN put AS p
ON o.sifra_org=p.sifra_org
WHERE p.trajanje >2
GROUP BY o.naziv_org
HAVING broj_putovanja > 2

3. Koja putovanja su jeftinija od prosječne cijene putovanja po organizatoru?

SELECT p.*
FROM org AS o INNER JOIN put AS p
ON o.sifra_org=p.sifra_org
WHERE p.cijena < (SELECT AVG (p.cijena)
FROM org AS o INNER JOIN put AS p
ON o.sifra_org=p.sifra_org)

4. Prikazati odredište i cijenu svakog putovanja, kao i odredište i cijenu putovanja koju mu neposredno prethodi, za putovanja koja su jeftinija od svojeg prethodnika.

SELECT p.odrediste, p.cijena cijena1, p.cijena cijena2, p.prethodi, p.prethodi
ON o.sifra_org=p.sifra_org
WHERE cijena1 < cijena2

5. Prikazati vrstu prijevoza, trajanje i cijenu za sva ona putovanja koja slijede nakon putovanja brodom u Veneciju.

SELECT p.prijevoz, p.trajanje, p.cijena
FROM put AS p
WHERE p.sifra_put > (SELECT p.sifra_put FROM put AS p
WHERE p.odrediste='Venecija'
AND p.prijevoz='brod')

6. Prikazati trajanje i cijenu onih putovanja koje organizira agencija Atlas, a skuplja su od prosječnog putovanja u Rim.

SELECT p.trajanje, p.cijena
FROM org AS o INNER JOIN put AS p
ON o.sifra_org=p.sifra_org
WHERE o.naziv_org='Atlas'
AND p.cijena > (SELECT AVG (p.cijena)
FROM put AS p
WHERE odrediste='Rim')
romanah je offline   Odgovor sa citatom ove poruke
Stara 3.9.2015, 14:41   #2
Apostrof
Veteran
 
Član od: 27.11.2007.
Lokacija: Segmentum Solar
Poruke: 1.122
Zahvalnice: 351
Zahvaljeno 386 puta na 195 poruka
Slanje poruke preko Skypea korisniku Apostrof
Određen forumom Re: SQL upiti - Pomoć

Upali MS Office Access mozes tu da isprobas i vezbas, napravi tabele, napravi querry i prebaci na SQL view.
Apostrof je sada online   Odgovor sa citatom ove poruke
Stara 3.9.2015, 23:59   #3
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: SQL upiti - Pomoć

Malo da provezbamo SQL, ionako sve redje imam prilike da ga pisem. Morao sam da promenim imena tabela i kolona u nesto sto se standardnije koristi.

Agencije: id, ime, adresa.
Aranzmani: id, agencija_id, polaziste, odrediste, prevoz, trajanje, cena, prethodni_aranzman_id (uz pretpostavku da je PUT.PRETHODI SIFRA_PUT prethodnog puta, tj aranzmana).

Kod:
1.
SELECT odrediste, prevoz, ime
FROM agencije INNER JOIN aranzmani
ON agencije.id = aranzmani.agencija_id
WHERE polaziste = 'Zagreb';

2.
SELECT agencije.*
FROM agencije INNER JOIN aranzmani
ON agencije.id = aranzmani.agencija_id
WHERE trajanje > 2
GROUP BY agencije.id
HAVING COUNT(*) > 2;

3.
SELECT aranzmani.*, prosecne_cene.prosek
FROM aranzmani LEFT JOIN (
  SELECT agencija_id, AVG(cena) AS prosek
  FROM aranzmani
  GROUP BY agencija_id
) AS prosecne_cene
ON aranzmani.agencija_id = prosecne_cene.agencija_id
WHERE cena < prosek;

4.
SELECT aranzmani.odrediste, aranzmani.cena,
prethodni_aranzmani.odrediste AS prethodni_odrediste, 
prethodni_aranzmani.cena AS prethodni_cena
FROM aranzmani LEFT JOIN aranzmani AS prethodni_aranzmani
ON aranzmani.prethodni_aranzman_id = prethodni_aranzmani.id
WHERE aranzmani.cena < prethodni_aranzmani.cena;

5.
SELECT prevoz, trajanje, cena
FROM aranzmani
WHERE prethodni_aranzman_id >= (
  SELECT id
  FROM aranzmani
  WHERE prevoz = 'brod' AND odrediste = 'Venecija'
  LIMIT 1
);

6.
SELECT trajanje, cena
FROM aranzmani INNER JOIN agencije
ON aranzmani.agencija_id = agencije.id
WHERE ime = 'Atlas' AND cena > (
  SELECT AVG(cena)
  FROM aranzmani
  WHERE odrediste = 'Rim'
);
Ja bih otprilike tako napisao. A ti nam javi kako izgledaju "zvanicna" resenja kada ih dobijes.
Remedy je offline   Odgovor sa citatom ove poruke
Stara 12.9.2015, 9:24   #4
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: SQL upiti - Pomoć

Mislim da rešenje petog zadaka nije dobro. Meni je najlogičnije ovako:
Kod:
SELECT aranzmani.prevoz, aranzmani.trajanje, aranzmani.cena
FROM aranzmani JOIN aranzmani as prethodni
ON aranzmani.prethodni_aranzman_id = prethodni.id
WHERE prethodni.odrediste = 'Venecija' AND prethodni.prevoz = 'brod'

Poslednja ispravka: ivan90BG (12.9.2015 u 9:49)
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 12.9.2015, 19:36   #5
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: SQL upiti - Pomoć

To je problem neprecizno formulisanog zadatka. Ja sam pretpostavio da treba izlistati podatke za sva putovanja koja slede nakon prvog putovanja brodom u Veneciju (uzimajuci u obzir i kako je OP pokusao da resi). Tvoj odgovor prikazuje podatke za svako putovanje kome prethodi neko putovanje brodom u Veneciju (eto kako bih ja formulisao pitanje gde se trazi takav odgovor). I jedno i drugo moze da bude ispravno, zavisi sta se trazi .
Remedy je offline   Odgovor sa citatom ove poruke
Stara 13.9.2015, 10:34   #6
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: SQL upiti - Pomoć

Postavka zadatka uopšte ne implicira da šifre imaju neko značenje, to jest da veća vrednost šifre znači vremenski skoriji trenutak. Sasvim je moguće da je svaka šifra nasumično generisan broj. Tako da mislim da nema logike porediti šifre.
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 13.9.2015, 12:45   #7
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: SQL upiti - Pomoć

To je dobar argument. Ali sta je znacenje poslednje kolone "pethodi" u tabeli "put"? Ja sam pretpostavio da je u pitanju sifra (id) prethodnog aranzmana (puta) i da se aranzmani unose odredjenim redosledom. U praksi sifra (id) najcesce ima AUTO_INCREMENT atribut, ali kao sto kazes ne mora da znaci, nije eksplicitno receno (atributi kolona u tabelama nam nisu poznati) - veca sifra ne mora da znaci da je aranzman kasnije ubacen (ali prethodni aranzman mora vec da bude u tabeli). Vrlo je moguce da tvoj odgovor jeste ono sto se trazi, jer sva ostala resenja zahtevaju JOIN (npr trenutno to obradjuju u skoli/kursu). U tom slucaju mi se formulacija zadatka "prikazati podatke za sva ona putovanja koja slede nakon putovanja brodom u Veneciju" uopste ne svidja (da je bar receno neposredno nakon). Mnogo jasnije bi bilo "prikazati podatke za sva putovanja kojima prethodi neko putovanje brodom u Veneciju". Problem bi trebalo da bude resiti zadatak, a ne protumaciti zadatak.

Poslednja ispravka: Remedy (13.9.2015 u 12:58)
Remedy je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Problem sa logovanjem na SQL Server 2000 Munja666 Programiranje 1 25.11.2014 22:21
Drajveri za SQL Server 2008 catwoman Aplikativni softver 0 10.5.2010 13:14
SQL upiti - neke nedoumice pixel Programiranje 22 11.12.2009 18:22
Kratko i jasno: da li je Joomli moguće menjati SQL bazu... Teva Web razvoj 1 20.9.2009 23:59
SQL Server 2000 Zoran035 Programiranje 2 18.10.2007 13:23


Sva vremena su po Griniču +2 h. Sada je 23:39.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com