Професионална програма
Loading...
+ Нов въпрос
kosio197 avatar kosio197 104 Точки

Problem 11. Mix of Peak and River Names From Built-in Functions

Привет,

Това ми е заявката, на локалната база изглежда наред, но в judje връща грешен отговор:

SELECT p.peak_name , r.river_name,
 LOWER( CONCAT(SUBSTRING(p.peak_name, 1, LENGTH(p.peak_name)-1), r.river_name))  AS mix
  FROM peaks AS p, rivers AS r
   WHERE (SUBSTRING(p.peak_name,  LENGTH(p.peak_name), LENGTH(p.peak_name)) = SUBSTRING(r.river_name, 1,1))
     ORDER BY mix;

Къде може да ми е грешката?

Тагове:
1
Databases Basics - MySQL
kaloyannikov avatar kaloyannikov 531 Точки

Пуснах ти заявката да видя на някои записи остават последните букви от върховете и от там и mismatch-a в judge.

Примерно(Galan, Niger и Galan,Nile) трябва да са galaniger i galanile  , а при теб ги изкарва galanniger и galannile.

Разликата идва от LENGTH и CHAR_LENGTH , ако го смениш ще мине .

LENGTH - дава дължината в bytes , а CHAR_LENGTH броя chars

Иначе това е моята заявка - http://pastebin.com/YuUd7Mwh 

2
30/09/2016 13:25:08
vancho avatar vancho 430 Точки

И аз се помъчих доста, докато не загрях, че ми дава на river_name с главна първа буква конкатенирано, и го поправих на LOWER и заработи.

 

SELECT peak_name, river_name, CONCAT(LOWER(peak_name), '', SUBSTRING(LOWER(river_name), 2)) AS mix FROM peaks, rivers

WHERE RIGHT(peak_name, 1) = LEFT(river_name, 1)

ORDER BY mix;

0
cefothe avatar cefothe 16 Точки

Това е моята заявка:

SELECT peak_name, river_name,CONCAT(LOWER(SUBSTRING(peak_name,1,LENGTH(peak_name)-1)),LOWER(river_name)) AS mix FROM peaks, rivers WHERE SUBSTRING(peak_name,LENGTH(peak_name),LENGTH(peak_name)) =LOWER( SUBSTRING(river_name,1,1)) ORDER BY mix

А това е резултата ми, имам 78 резултата и не виждам къде е грешката


+ Options

peak_name river_name mix Ascending   
Aconcagua Amazon aconcaguamazon
Aconcagua Amur aconcaguamur
Banski Suhodol Lena banski suhodolena
Banski Suhodol Lower Tunguska banski suhodolower tunguska
Botev Volga botevolga
Carstensz Pyramid Danube carstensz pyramidanube
Damavand Danube damavandanube
Elbrus Saint Lawrence elbrusaint lawrence
Elbrus Salween elbrusalween
Elbrus São Francisco elbrusão francisco
Elbrus Shatt al-Arab elbrushatt al-arab
0
cefothe avatar cefothe 16 Точки

Оправих го проблема е бил в:

LENGTH() returns the length of the string measured in bytes. 
CHAR_LENGTH() returns the length of the string measured in characters.

Използвах LENGTH като го смених на CHAR_LENGTH и проработи, защото 'á' са нужни 2 байта и тук става грешката

0
mbeleva88 avatar mbeleva88 69 Точки

Здравейте,

Може ли някой да намери моята грешка в заявката,
в judge не ми минава, а виждам, че всичко УЖ е наред.

SELECT p.peak_name,
              r.river_name,
              LOWER(CONCAT(p.peak_name,r.river_name)) AS mix
 FROM rivers AS r, peaks AS p
   WHERE LOWER(RIGHT(p.peak_name,1)) = LOWER(LEFT(r.river_name,1))  
   ORDER BY mix

0
bond4o avatar bond4o 8 Точки

SELECT p.peak_name, r.river_name, LOWER(CONCAT(p.peak_name,SUBSTRING(r.river_name,2))) AS mix
FROM rivers AS r, peaks AS p
WHERE LOWER(RIGHT(p.peak_name,1)) = LOWER(LEFT(r.river_name,1))  
ORDER BY mix

 

 

Виж пак условието на задачата

1
17/10/2016 14:19:37
mbeleva88 avatar mbeleva88 69 Точки

уф, ние игнорираме 1ната буква ли :) 

мерси

0
Silgenieva avatar Silgenieva 1 Точки

 

Тази е моята заявка и минава 100 / 100

SELECT peak_name , river_name,
 LOWER( CONCAT(SUBSTRING(peak_name, 1, LENGTH(peak_name)-1), river_name))  AS mix
  FROM peaks AS p, rivers AS r
   WHERE (SUBSTRING(peak_name,  LENGTH(peak_name), LENGTH(peak_name)) = SUBSTRING(river_name, 1,1))
     ORDER BY mix;

0
velmona avatar velmona 1 Точки

 

Вариант 1:

SELECT p.peak_name, r.river_name, lower(CONCAT(p.peak_name,substring(r.river_name,2))) as mix
FROM peaks p, rivers r
WHERE SUBSTRING(REVERSE(p.peak_name),1,1)=SUBSTRING(r.river_name,1,1) ORDER BY mix;

Вариант 2:

SELECT peak_name,river_name, LOWER(CONCAT(peak_name,SUBSTRING(river_name,2)))  AS mix
FROM peaks p, rivers r
WHERE RIGHT (p.peak_name,1)=LEFT(r.river_name,1)
ORDER BY mix;

0