SQL - pomoc w rozwiazaniu zapytan

0

Witam,

Mam problem z zaliczeniem na uczelni baz danych. W załączniku dodaje zdjęcie jakie były zapytania do napisania. Chciałbym je samodzielnie rozwiązać w domu, ale powiem, że z niektórymi mam wielki problem. Może ktoś mi pomóc i podać wynik tych 6 zapytań w SQL ?mms_20150130_212027.jpg

0

Tutaj starałem się to zrobić ale z zad 5 i 6 mam problem i nie wiem czy dobrze
-- zad 1
select f.tytul, COUNT(w.id_filmu) from Filmy f inner join Wypozyczalnia w on f.id_filmu=w.id_filmu group by tytul
-- zad 2
select tytul, kraj_produkcji from Filmy f inner join Wypozyczalnia w on
f.id_filmu=w.id_filmu where gatunek='dramat' and w.data_wyp > '2000-10-10'
-- zad 3
select tytul, nazwisko, k.pesel from Filmy f inner join Wypozyczalnia w on f.id_filmu=w.id_filmu
inner join Klienci k on w.pesel=k.pesel where k.nazwisko like '%kowalski' and k.imie like '%jan'
-- zad 4
select Sum(Cena) from Filmy f inner join Wypozyczalnia w on f.id_filmu=w.id_filmu where data_wyp='2010-01-01'
-- zad 5

select tytul from Filmy f inner join Wypozyczalnia w on f.id_filmu<>w.id_filmu group by tytul

--zad.6
select cena from Filmy group by cena having Min(cena)=cena

Gdyby ktoś mógł sprawdzić i powiedzieć czy jest to dobrze

2

zad 1 - wyglaa OK
zad 2 - dodaj DISTINCT i warunek masz w złą stronę (no i zła data)
zad 3 - DISTINCT oraz = zamiast LIKE. Dodatkowo musisz uważać, czy bazę masz CS, czy CI
zad 4 - oprócz daty wydaje się być OK.
zad 5 - źle. Skorzystaj z LEFT JOIN z Nullem (we WHERE)
zad 6 - źle. Skorzystaj z połączenia z zapytaniem wybierającym najniższą cenę - JOIN (SELECT Min(Cena) FROM Filmy) sub ON sub.cena=Filmy.Cena, albo z waunku we WHERE - WHERE cena=(SELECT Min(Cena) FROM Filmy)

0

Takie rzeczy możesz sobie łatwo przećwiczyć na sqlfiddle.com. Masz tutaj stworzone tabele, dopisz inserty i sam zobacz, czy Twoje zapytania dają dobry wynik:

http://sqlfiddle.com/#!6/e07e1

0

zad. 2 select distinct tytul, kraj_produkcji from Filmy f inner join Wypozyczalnia w on
w.id_filmu=f.id_filmu where gatunek='dramat' and w.data_wyp > '2010'
tutaj nie rozumiem o co za bardzo chodzi z tym warunkiem gdybyś mógł rozjaśnić mi temat ?
zad. 3 select tytul, nazwisko, k.pesel from Filmy f join Wypozyczalnia w on f.id_filmu=w.id_filmu
join Klienci k on w.pesel=k.pesel where k.nazwisko='kowalski' and k.imie='jan'
rozumiem ze like stosujemy tylko kiedy nie znamy całego nazwiska tylko jeżeli zaczyna się od np '%a'
zad.4 select Sum(Cena) from Filmy f inner join Wypozyczalnia w on f.id_filmu=w.id_filmu where data_wyp='2010-09-01'
zad.5 select f.tytul from Filmy f left join Wypozyczalnia w on f.id_filmu=w.id_filmu where w.id_filmu is null
zad. 6 select tytul, cena from Filmy where cena=(select MIN(cena) from Filmy)

Dzieki za pomoc myśle że teraz będzie już wszystko ok

0
Hrypa napisał(a):

Takie rzeczy możesz sobie łatwo przećwiczyć na sqlfiddle.com. Masz tutaj stworzone tabele, dopisz inserty i sam zobacz, czy Twoje zapytania dają dobry wynik:

http://sqlfiddle.com/#!6/e07e1

Co do ćwiczeń to mam sql managment studio i już sobie utworzyłem te tabelki i na tym też ćwiczę czy dane są dobrze pokazywane

1 użytkowników online, w tym zalogowanych: 0, gości: 1