Софтуерно Инженерство
Loading...
+ Нов въпрос
vancho avatar vancho 430 Точки

JAVA DB Fundametals: SAMPLE EXAM 11.10.2016 - Problems

Защо в judge не минава горната заявка, при която изхода е един и същ с долната заявка, която е на лектора. А трябва да гъдаем по какъв начин иска judge-a да му я подадеш! П.с. това не е единичен случай от SAMPLE EXAM-а.

SELECT c.customer_id,
              c.first_name,
              c.last_name,
              c.gender,
              ci.city_name
  FROM customers AS c
 INNER JOIN cities AS ci
    ON c.city_id = ci.city_id
 WHERE (c.last_name LIKE 'Bu%'
     OR c.first_name LIKE '%a')
   AND LENGTH(ci.city_name) >= 8;

 

SELECT c.customer_id,
               c.first_name,
               c.last_name,
               c.gender,
               ci.city_name
  FROM customers AS c
 INNER JOIN cities AS ci
     ON c.city_id = ci.city_id
 WHERE (LEFT(c.last_name, 2) = 'Bu'
     OR RIGHT(c.first_name, 1) = 'a')
    AND LENGTH(ci.city_name) > 7;

Тагове:
1
Java DB 12/10/2016 15:59:16
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

Може ли да кажеш и коя задача е (т.е. да видим условието). Защото аз на пръв поглед виждам огромна разлика между двете заявки. В едната се казва "Нещо булево ИЛИ нещо булево И нещо булево" а в другата "(Нещо булево ИЛИ нещо булево) И нещо булево". Изглежда ми като да не е въпрос на догадки, а по-скоро на логическа проверка.

0
12/10/2016 16:03:29
vancho avatar vancho 430 Точки

Sample Exam Bank -> Section 3. Querying -> 3. Customer City

LINK

1
12/10/2016 16:06:43
RoYaL avatar RoYaL SoftUni Team Trainer 6845 Точки

Ясно, да. Ами така е по условие:

" all customers whose last name starts with ‘Bu’ or first name ends with ‘a’ ":

- Т.е. клиентите трябва да отговарят на едно от двете условия. Когато някой клиент отговаря на едно от двете условия, чак тогава трябва да отговаря И на трето:

" for those customers the length of the city name should at least 8 letters "

Т.е. логиката е

(започва с 'Bu' или завършва на 'a') И /ако първото в скобите е дало true/ градът му е с поне 8 букви

Ако ти няма скобите, лявата асоциативност ще даде:

започва с 'Bu' ИЛИ завършва на 'a' И градът му е с поне 8 букви

Съответно ако някой започва с 'Bu' без значение дали дясната част е невярна, то Вярно ИЛИ Невярно ще даде Вярно ;) Та query-то без скобите дава един допълнителен резултат - "Annie Burns от град Bromma" - както може да се видим, градът не е с 8 букви.

0
12/10/2016 16:13:49
vancho avatar vancho 430 Точки

Ами това не е ли същото:

WHERE (c.last_name LIKE 'Bu%'
     OR c.first_name LIKE '%a')
   AND LENGTH(ci.city_name) >= 8;

1