• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL - poprawność zapytania

Object Storage Arubacloud
0 głosów
563 wizyt
pytanie zadane 28 lipca 2015 w SQL, bazy danych przez deih Nowicjusz (120 p.)

Cześć,

 Testuję jeden z kursów SQL i mam następujące zadanie: 

/* Pokaż wszystkie wiersze z tabeli 'Klient' i kolumnę o nazwie 'Iloczyn', która zawierać będzie przemnożone przez siebie długości nazw imion i nazwisk, gdzie iloczyn ten jest większy równy 30. */
 
SELECT *, CHAR_LENGTH(imie) * CHAR_LENGTH(nazwisko) "Iloczyn" FROM klient
WHERE iloczyn >= 30; -- error: kolumna iloczyn nie istnieje
 
SELECT *, CHAR_LENGTH(imie) * CHAR_LENGTH(nazwisko) "Iloczyn" FROM klient
WHERE CHAR_LENGTH(imie) * CHAR_LENGTH(nazwisko) >= 30; -- konsola pokazuje prawidlowe dane, ale zapytanie nie przechodzi akceptacji zadania

Moje proponowane odpowiedzi na zadanie powyżej. Niestety tak jak napisałem w komentarzach, oba nie zaliczają zadania. Próbowałem na wszystkie sposoby z AS, ' ', " " i nic to nie daje. Nie wiem czy po prostu wina nie leży po stronie twórców kursu i źle parsuje moje zapytanie.

Dziękuję za ewentualną pomoc. 

P.S tutaj pastebin jeśli wklejony byłby nieczytelny:  http://pastebin.com/nmvTCbFe

4 odpowiedzi

+1 głos
odpowiedź 28 lipca 2015 przez Comandeer Guru (601,990 p.)

Widzę dwie rzeczy, które mogą haczyć:

  • tabela klient i Klient to dwie różne tabele (zwłaszcza pod Linuksem)
  • " gdzie iloczyn ten" → zatem w warunku winna być owa kolumna Iloczyn; tego niestety WHERE nie ogarnie, ale HAVING już tak
komentarz 28 lipca 2015 przez deih Nowicjusz (120 p.)
Niestety, żadna z podanych propozycji nie pomogła.
komentarz 28 lipca 2015 przez Comandeer Guru (601,990 p.)

Nawet tak konserwatywna wersja jak:

SELECT Klient.*, CHAR_LENGTH(Klient.imie) * CHAR_LENGTH(Klient.nazwisko) AS Iloczyn
FROM Klient
HAVING Iloczyn >= 30;

?

komentarz 28 lipca 2015 przez deih Nowicjusz (120 p.)
Tak jest. Nadal error: kolumna 'iloczyn' nie istnieje.
komentarz 28 lipca 2015 przez Comandeer Guru (601,990 p.)
Na jakiej to jest bazie odpalane? Bo na moim lokalnym MySQL działa bez żadnego problemu i zwraca poprawny wynik
komentarz 28 lipca 2015 przez deih Nowicjusz (120 p.)
PostgreSQL...
komentarz 28 lipca 2015 przez Comandeer Guru (601,990 p.)
SELECT *, CHAR_LENGTH(imie) * CHAR_LENGTH(nazwisko) AS "Iloczyn" FROM "Klient"
WHERE CHAR_LENGTH(imie) * CHAR_LENGTH(nazwisko) >= 30;

Chyba lepiej się nie da tego ogarnąć w PostgreSQL (niestety, tam HAVING nie zachowuje się tak, jak w MySQL)

0 głosów
odpowiedź 28 lipca 2015 przez Boshi VIP (100,240 p.)
Nie chce mi się tego analizować teraz, ale jest sens takie operacje przerzucać na bazę danych? nie lepiej to w php zrobić duzo szybciej i prościej ?
komentarz 28 lipca 2015 przez deih Nowicjusz (120 p.)
Proszę czytać ze zrozumieniem. Napisałem, że to zadanie z kursu SQL, który testuje. Jasne, że każdy z nas mógłby to zrobić w innych językach.
komentarz 28 lipca 2015 przez Comandeer Guru (601,990 p.)
Abstrahując od tego, że pytanie dotyczy kursu: po to mam bazę, żeby to ona operowała na danych, a nie ja po stronie kodu.
komentarz 28 lipca 2015 przez Boshi VIP (100,240 p.)
Zależy  jakie operacje, czasem jest to niewydajne i nie chodzi mi konretnie o ten przypadek.
komentarz 5 marca 2016 przez ewitka Nowicjusz (100 p.)
Witam,

mam  ten sam problem, udało Ci się to jakoś wpisać, żeby zaliczyło to zadanie?

Ewa
0 głosów
odpowiedź 5 marca 2016 przez jeremus Maniak (59,720 p.)

spróbuj tak :

SELECT Klient.*, CHAR_LENGTH(Klient.imie) * CHAR_LENGTH(Klient.nazwisko) AS Iloczyn
FROM Klient
HAVING CHAR_LENGTH(Klient.imie) * CHAR_LENGTH(Klient.nazwisko) >= 30;

 

–1 głos
odpowiedź 28 lipca 2015 przez _coder_ Gaduła (3,480 p.)
hmm, moze sprobuj:

select Klient.*, il.iloczyn from Klient, (select CHAR_LENGTH(Klient.imie) * CHAR_LENGTH(Klient.nazwisko) as "iloczyn" from Klient) as il where iloczyn >= 30;

Podobne pytania

0 głosów
1 odpowiedź 85 wizyt
pytanie zadane 22 maja 2019 w PHP przez iframeeh Użytkownik (680 p.)
0 głosów
1 odpowiedź 3,806 wizyt
pytanie zadane 21 stycznia 2018 w SQL, bazy danych przez Mlorism Użytkownik (580 p.)
0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 10 maja 2022 w SQL, bazy danych przez alpha.netrunner Gaduła (4,740 p.)

92,620 zapytań

141,473 odpowiedzi

319,813 komentarzy

62,003 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...