Ogromna prośba o sprawdzenie rozwiązania zadań i wskazanie uwag :)
W załącznikach polecenie i rozwiązanie
Sprawdziłem. Źle, źle, źle.
Uwagi: http://sqlfiddle.com/, sprawdź, czy to, co wpisałeś, w ogóle jest poprawne składniowo i popraw.
możesz powiedzieć coś więcej?
Patryk Blawat napisał(a):
możesz powiedzieć coś więcej?
W wyniku sprawdzenia doszedłem do wniosku, że pierwsze z rozwiązań jest złe, drugie z rozwiązań jest złe, a trzecie jest złe.
Ponieważ poprosiłeś o uwagi, zasugerowałem, abyś skorzystał z serwisu umieszczonego pod adresem http://sqlfiddle.com/ i tamże utworzył strukturę danych i wykonał swoje zapytania SQLowe. Dzięki temu mógłbyś poprawić je (bo w tej chwili mają błędy na poziomie składni). Następnie, po dopracowaniu składni, mógłbyś zająć się ich logiką.
Czy ktoś jest w stanie podpowiedzieć co należy zmienić w składni aby była prawidłowa?
w 1 przecinek
w 2 JOIN
w 3 HAVING
-- Zadanie 1
SELECT `Id_książki`, `Tytuł` FROM `Książki`
WHERE(`Tytuł` LIKE '%a' AND `Język_oryginału`='niemiecki') OR `Id_gatunku`='12';
-- Zadanie 2
SELECT
`Tytuł`.`Książki`,
`Id_gatunku`.`Książki`,
`Nazwisko`.`Autorzy`,
`Imię1`.`Autorzy`
FROM
`Autorzy`
INNER JOIN
`Książki`
ON
`Autorzy`.`Id_autora`=`Książki`.`Id_autora`
WHERE
`Autorzy`.`Data_urodzenia`='1980' AND `Autorzy`='C%';
-- Zadanie 3
SELECT `Id_autora`, COUNT(`Id_gatunku`) as ile_książek_z_gatunku_o_identyfikatorze_3
FROM `Książki`
WHERE `Id_gatunku`='3'
HAVING COUNT (`Id_gatunku`)>5
ORDER BY `ile_książek_z_gatunku_o_identyfikatorze_3` ASC, `Id_autora` DESC;
Czy teraz będzie ok? Dziękuję z góry za pomoc :)
W 2 masz błąd, data_urodzenia
jest polem date, więc przyrównanie do roku w postaci stringa nie jest prawidłowe, jak i przyrównanie do maski operatorem =
czy dodanie YEAR(Data_urodzenia) załatwi sprawę?
Tak, możesz też użyć between
-- Zadanie 1
SELECT `Id_książki`, `Tytuł` FROM `Książki`
WHERE(`Tytuł` LIKE '%a' AND `Język_oryginału`='niemiecki') OR `Id_gatunku`='12';
-- Zadanie 2
SELECT
`Tytuł`.`Książki`,
`Id_gatunku`.`Książki`,
`Nazwisko`.`Autorzy`,
`Imię1`.`Autorzy`
FROM
`Autorzy`
INNER JOIN
`Książki`
ON
`Autorzy`.`Id_autora`=`Książki`.`Id_autora`
WHERE
YEAR(`Autorzy`.`Data_urodzenia`)='1980' AND `Autorzy`='C%';
-- Zadanie 3
SELECT `Id_autora`, COUNT(`Id_gatunku`) as ile_książek_z_gatunku_o_identyfikatorze_3
FROM `Książki`
WHERE `Id_gatunku`='3'
HAVING COUNT (`Id_gatunku`)>5
ORDER BY `ile_książek_z_gatunku_o_identyfikatorze_3` ASC, `Id_autora` DESC;
Teraz zadanie jest dopracowane?
Patryk Blawat napisał(a):
Teraz zadanie jest dopracowane?
Sprawdzałeś, czy te zapytania w ogóle się uruchamiają na jakiejkolwiek bazie? Na jakiej?
Jeśli nie masz dostępu w szkółce/na uczelni (choć zakładam, że powinno coś być, skoro to "kartkówka zaliczeniowa z Systemów baz danych"), to skorzystaj z "baz" online - link do przykładowej dostałeś.
Póki co wydaje się, że uparcie i wytrwale piszesz te zapytania na kartce/w notatniku, zamiast uruchamiać je na istniejącej bazie.
Nie rozumiem, po co. Baza parsuje zapytanie i najczęściej podpowie Ci, gdzie masz błąd.