Zadania z MySQL z UW-Team.org

Problemy z HTML, CSS, PHP, MySQL i innymi technologiami webowymi.

Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 14:07

Wielu czytelników po zapoznaniu się z moim kursem MySQL wysyłało na redakcyjny adres maile z zapytaniami o to, w jaki sposób można przećwiczyć zdobytą wiedzę. Aby ułatwić wam przyswajanie materiału, oraz aby pozwolić wam na sprawdzenie, jak wiele się nauczyliście, stworzyłem dla Was zestaw zadań z MySQL. Całość została zaprogramowana jako samodzielna aplikacja webowa, sprawdzająca automatycznie poprawność wykonywanych ćwiczeń. Chcąc sprawdzić swoje umiejętności, odwiedź nasze ćwiczenia z MySQL. Aktualnie przygotowałem dla was 10 zadań, jednak ta liczba będzie sukcesywnie zwiększana po publikacji nowych odcinków kursu.

Pamiętaj, że system powiadomi Cię specjalnym komunikatem, gdy wykonasz zadanie poprawnie.

http://www.uw-team.org/p/mysql/

W razie problemów z rozwiązaniem któregoś z zadań, możesz poprosić o pomoc na naszym forum w tym temacie, który aktualnie czytasz :)
..:: Unknow ::..
redaktor naczelny: http://www.uw-team.org
unknow
Administrator
Avatar użytkownika
Posty: 1155
Dołączył(a): Wt lip 13, 2004 13:14
Lokalizacja: www.uw-team.org

Spokojnie - to tylko reklama - zniknie po zalogowaniu :)

Pani Reklama
Automat
Posty:
Dołączył(a): ab aeterno
Lokalizacja: UW-Zaloga

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 14:52

Dzięki !
Sprawdzę swoje umiejętności , ale nie tylko ja :d ;]
Moje projekty :
Kenobi CMS
HackME CMS
PSP Enabler 5.50 to 5.03
Mapy CS
Własny Dedyk (500 MhZ , 1 GB RAM , 10 MB Net , 100 MB LAN)
Kenobi
user
Avatar użytkownika
Posty: 127
Dołączył(a): Wt maja 27, 2008 14:20
Lokalizacja: Kraków

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 14:56

Unknow lubię Twoje videoarty, jednakże uczysz ludzi czasem złych rozwiązań, mało optymalnych czasem trudniejszych.

Po co męczyć się wybierając po 2-3 tabele w zapytaniu jak to pokazujesz w swoich kursach skoro wystarczy odpowiedni LEFT JOIN? Dodatkowo dla zwiększenia wydajności nazwy tabel umieszcza się w ` `

Co do ćwiczeń, nie miałem zbytnio czasu przeglądać wszystkich ale znalazłem błędy typu:

Zadanie 9:
Wypisz drugiego spośród najlepiej zarabiających użytkowników. Odpowiedź powinna zawierać tylko login tej osoby

Zapytanie:
Kod: Zaznacz cały
select `login` from `uzytkownicy` order by `zarobki` desc limit 1,1

Nie jest niby poprawne.

Zadanie 5:
Wyświetl nazwy pracodawców, którzy mają swoje siedziby w miastach mającech poniżej 10000 mieszkańców.

Zapytanie:
Kod: Zaznacz cały
select `pracodawcy`.`nazwa` from `pracodawcy` LEFT JOIN `miasta` ON(`pracodawcy`.`miasto_id` = `miasta`.`id`) WHERE `ludnosc` < 1000


więcej nie miałem czasu przetestować.

Sprawdzaj poprawność wyniku a nie zapytania.
fifi209
user
 
Posty: 74
Dołączył(a): Śr lis 12, 2008 22:59

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 15:45

fifi209 napisał(a):Po co męczyć się wybierając po 2-3 tabele w zapytaniu jak to pokazujesz w swoich kursach skoro wystarczy odpowiedni LEFT JOIN? Dodatkowo dla zwiększenia wydajności nazwy tabel umieszcza się w ` `


Zgadza się - ale do JOIN'ów jeszcze nie doszedłem w kursie, więc póki co muszę pokazywać wiązanie tabel :)

fifi209 napisał(a):Co do ćwiczeń, nie miałem zbytnio czasu przeglądać wszystkich ale znalazłem błędy typu:

Zadanie 9:
Wypisz drugiego spośród najlepiej zarabiających użytkowników. Odpowiedź powinna zawierać tylko login tej osoby

Zapytanie:
Kod: Zaznacz cały
select `login` from `uzytkownicy` order by `zarobki` desc limit 1,1

Nie jest niby poprawne.


Znalazłeś buga w module sprawdzania poprawności zadania - Twoje zapytanie jest w 100% poprawne i dokładnie o takie mi chodziło.
Błąd oczywiście już naprawiłem.

fifi209 napisał(a):Zapytanie:
Kod: Zaznacz cały
select `pracodawcy`.`nazwa` from `pracodawcy` LEFT JOIN `miasta` ON(`pracodawcy`.`miasto_id` = `miasta`.`id`) WHERE `ludnosc` < 1000


więcej nie miałem czasu przetestować.


Gdy tylko na końcu zapytania wpiszesz 10000 tak jak jest w zadaniu, a nie 1000, to okaże się, że Twoje zapytanie zwraca poprawne dane :roll:

fifi209 napisał(a):Sprawdzaj poprawność wyniku a nie zapytania.

Tak właśnie robie. Przetrzymuje w skrypcie poprawne ODPOWIEDZI, czyli rekordy wyciągnięte z bazy.
Nie jest ważne jak dojdziesz do wyniku, ważne, abyś otrzymał poprawną odpowiedź.
..:: Unknow ::..
redaktor naczelny: http://www.uw-team.org
unknow
Administrator
Avatar użytkownika
Posty: 1155
Dołączył(a): Wt lip 13, 2004 13:14
Lokalizacja: www.uw-team.org

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 15:59

Z tym jednym zerem moje niedopatrzenie - przepraszam.

Co do pytania o wydajność? tj. umieszczanie nazw pól i tabel w ` ` ?

btw. pokażesz w kursach tworzenie np. widoków?
fifi209
user
 
Posty: 74
Dołączył(a): Śr lis 12, 2008 22:59

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 16:51

jak wygląda komunikat który potwierdza poprawne wykonanie zadania? ponieważ zrobiłem 1 i 2 i dobrze ponieważ otrzymałem to co powinienem otrzymać ale żadnego komunikatu nie widziałem.
Jeśli piszę posta to nie dlatego że nie umiem korzystać z wyszukiwarek internetowych.
http://www.goldant.pl <---- ZAPRASZAM projektowanie stron www
tonapewno
user
Avatar użytkownika
Posty: 230
Dołączył(a): Cz maja 29, 2008 16:51
Lokalizacja: Ostrowiec Świętokrzyski

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 17:24

tonapewno napisał(a):jak wygląda komunikat który potwierdza poprawne wykonanie zadania? ponieważ zrobiłem 1 i 2 i dobrze ponieważ otrzymałem to co powinienem otrzymać ale żadnego komunikatu nie widziałem.


Zadanie rozwiązane poprawnie - przejdź do kolejnego »
fifi209
user
 
Posty: 74
Dołączył(a): Śr lis 12, 2008 22:59

Re: Zadania z MySQL z UW-Team.org

PostWt lip 13, 2010 21:45

tonapewno napisał(a):jak wygląda komunikat który potwierdza poprawne wykonanie zadania? ponieważ zrobiłem 1 i 2 i dobrze ponieważ otrzymałem to co powinienem otrzymać ale żadnego komunikatu nie widziałem.


Upewnij się, że zrobiłeś wszystko zgodnie z poleceniem.
Zwróć szczególną uwagę na ilość wyciąganych danych - w pierwszym zadaniu ma to być jedna kolumna, w drugim wszystkie.
Jeśli jednak uważasz, że błąd jest po stronie skryptu, a nie Twojej, to podeślij mi na priv zapytania jakie wpisywałeś.

fifi209 napisał(a):Co do pytania o wydajność? tj. umieszczanie nazw pól i tabel w ` ` ?

Przyznam, że nigdy nie słyszałem o tym, aby używanie backquotes w zapytaniu miało jakikolwiek wpływ na wydajność.
Ich zastosowanie ma na celu po prostu rozdzielenie obiektów używanych w zapytaniu od np. łańcuchów tekstowych itp.

fifi209 napisał(a):btw. pokażesz w kursach tworzenie np. widoków?

Myślę, że w późniejszym czasie taka wiedza może się przydać (chociażby ze względu na aspekt bezpieczeństwa), więc na pewno poruszę ten temat.
..:: Unknow ::..
redaktor naczelny: http://www.uw-team.org
unknow
Administrator
Avatar użytkownika
Posty: 1155
Dołączył(a): Wt lip 13, 2004 13:14
Lokalizacja: www.uw-team.org

Re: Zadania z MySQL z UW-Team.org

PostŚr lip 14, 2010 10:58

unknow napisał(a):
fifi209 napisał(a):Co do pytania o wydajność? tj. umieszczanie nazw pól i tabel w ` ` ?

Przyznam, że nigdy nie słyszałem o tym, aby używanie backquotes w zapytaniu miało jakikolwiek wpływ na wydajność.
Ich zastosowanie ma na celu po prostu rozdzielenie obiektów używanych w zapytaniu od np. łańcuchów tekstowych itp.


To sobie sam odpowiedziałeś, skoro rozdziela np. od łańcuchów tekstowych to mysql automatycznie wie, że NIE JEST to łańcuch tekstowy i całość wykona się teoretycznie szybciej. Poza tym chyba dobrym nawykiem jest stosowanie backqoutes. Nie wiem czy zaglądasz na forum.php.pl, jeżeli nie to powiem iż jest tam naprawdę dużo ludzi z wiele większym doświadczeniem niż na uw-team, z potwierdzoną wiedzą w postaci ZCE i to właśnie Oni tłuką wszystkim do głowy optymalizację skryptów i zapytań jak i uczą pisać nazwijmy to elegancki kod. Dodam jeszcze, że w żadnym wypadku nie oceniam do końca wiedzy ludzi z uw-team'u, aczkolwiek po Twoich video artach można troszkę wywnioskować i nie czuj się tutaj urażony - równie dobrze możesz pokazywać co innego na video artach a co innego stosować w życiu codziennym. :)

Co do "błędów w php" - mam tu na myśli serię video artów, o ile dobrze pamiętam nie poruszyłeś tematu magic_quotes a to raczej też ważne zagadnienie, bo kto zacznie teraz pisać dziurawe skrypty przez to badziewie przy nowej wersji php zostanie skutecznie ukarany:
This feature has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
fifi209
user
 
Posty: 74
Dołączył(a): Śr lis 12, 2008 22:59

Re: Zadania z MySQL z UW-Team.org

PostŚr lip 14, 2010 19:31

Słucham? Mam od nowa oglądać te videoarty, zeby znać nazwy tabel, pól itp... Przepraszam, ale według mnie powinno byc to gdzies dopisane. Tylko dlatego, że oglądalem to pare miesiecy temu i nie pamietam tych nazw, a chce sobie przejsc to choćy dla zabawy to mam oglądac od nowa?
eider
user
 
Posty: 48
Dołączył(a): Wt lut 23, 2010 19:37

Re: Zadania z MySQL z UW-Team.org

PostŚr lip 14, 2010 20:04

eider napisał(a):Słucham? Mam od nowa oglądać te videoarty, zeby znać nazwy tabel, pól itp... Przepraszam, ale według mnie powinno byc to gdzies dopisane. Tylko dlatego, że oglądalem to pare miesiecy temu i nie pamietam tych nazw, a chce sobie przejsc to choćy dla zabawy to mam oglądac od nowa?


show tables
rychu
user
 
Posty: 73
Dołączył(a): Cz paź 23, 2008 11:17

Re: Zadania z MySQL z UW-Team.org

PostŚr lip 14, 2010 20:15

eider napisał(a):Słucham? Mam od nowa oglądać te videoarty, zeby znać nazwy tabel, pól itp... Przepraszam, ale według mnie powinno byc to gdzies dopisane. Tylko dlatego, że oglądalem to pare miesiecy temu i nie pamietam tych nazw, a chce sobie przejsc to choćy dla zabawy to mam oglądac od nowa?


Po otworzeniu każdego zadania, pod polem na wpisanie zapytania masz opcje "Show tables" - możesz przeglądać tam budowę tabeli, jak i zawarte w niej dane.
..:: Unknow ::..
redaktor naczelny: http://www.uw-team.org
unknow
Administrator
Avatar użytkownika
Posty: 1155
Dołączył(a): Wt lip 13, 2004 13:14
Lokalizacja: www.uw-team.org

Re: Zadania z MySQL z UW-Team.org

PostŚr lip 14, 2010 23:42

Mam problem z 8 zadaniem
może ktoś mi pomoże lub coś zasugeruje
rychu
user
 
Posty: 73
Dołączył(a): Cz paź 23, 2008 11:17

Re: Zadania z MySQL z UW-Team.org

PostCz lip 15, 2010 9:38

rychu napisał(a):Mam problem z 8 zadaniem
może ktoś mi pomoże lub coś zasugeruje


Wystarczy rozbić polecenie na składowe:

Wypisz średnie zarobki = select avg(zarobki)
u każdego z szefów = group by szef
i posortuj je rosnąco (najmniejsze zarobki na początku) = order by avg(zarobki) asc
Odpowiedź powinna składać się z dwóch kolumn: szef (zawierająca ID szefa) oraz "srednia" zawierającą wyliczoną średnią zarobków = select szef, avg(zarobki) as srednia

I w sumie tyle potrzebujesz wiedzieć - tabela którą masz odpytać, to ta sama, w której są wspomniane zarobki :roll:
..:: Unknow ::..
redaktor naczelny: http://www.uw-team.org
unknow
Administrator
Avatar użytkownika
Posty: 1155
Dołączył(a): Wt lip 13, 2004 13:14
Lokalizacja: www.uw-team.org

Re: Zadania z MySQL z UW-Team.org

PostWt lip 20, 2010 12:59

WItam. Mam taką jedną sugestię do 10 zadania.
Może ktoś doprecyzować treść zadania o to w jakiej kolejności (rosnącej czy malejącej ) posortować nazwy miast (bo ilość wiem że trzeba sortować malejąco). Końcówka zapytania ORDER BY ilosc DESC jest traktowana błędnie, a taka końcówka: ORDER BY ilosc DESC, nazwa ASC już przyjmowana jako prawidłowa - chociaż obie odpowiedzi są zgodne z wymogami podanymi w zadaniu.
@Unknow wysłałem Ci PW z pełnym zapytaniem.
Pozdrawiam.
darkness202
user
 
Posty: 1
Dołączył(a): Wt lip 20, 2010 12:40

Powrót do Początkujący webmaster

Kto przegląda forum

Użytkownicy przeglądający ten dział: Yahoo [Bot] i 1 gość