We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.

SELECT A,B,C,
CASE
WHEN ((A = B) AND (B <> C) OR (B = C) AND (A <> B) OR (A = C) AND (A <> B)) THEN 'Isosceles'
WHEN ((A = B) AND (B = C) AND (A = C)) THEN 'Equilateral'
WHEN ((A <> B) AND (B <> C) AND (A <> C) AND NOT ((A + B) <= C) OR ((A + C) <= B) OR ((C + B) <= A)) THEN 'Scalene'
WHEN (((A + B) <= C) OR ((A + C) <= B) OR ((C + B) <= A)) THEN 'Not A Triangle'
END
FROM TRIANGLES
ORDER BY 1,2,3;

SELECT "Isosceles" from TRIANGLES where ( ((A = B) or (A = C) or (C = B) ) and not ( A = B and A = C ) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B )) );

SELECT "Equilateral" from TRIANGLES where ( A = B and A = C );

SELECT "Scalene" from TRIANGLES where ( ((A <> B) and (A <> C) and ( B <> C )) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B )) );

SELECT "Not A Triangle" from TRIANGLES where (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B ));

Why does it says wrong answer ??

or this

CASE
WHEN (((A = B) or (A = C) or (C = B) ) and not ( A = B and A = C ) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B ))) THEN SELECT "Isosceles";
WHEN ( A = B and A = C ) THEN SELECT "Isosceles";
WHEN (((A <> B) and (A <> C) and ( B <> C )) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B ))) THEN SELECT "Scalene";
WHEN (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B )) THEN SELECT "Not A Triangle";
END CASE

I think you need to read about UNION for the first, the second the CASE should live inside the SELECT not the other way around. I've never seen it the other way around

Donts
1.Remove column values
2.Remove order by
3.Only Equilateral, Scalene, Isocelese and Not A Triangle are expected outputs.. So 20,20,40 should be reported a 'Not A Triangle'. (This is confusing to me also)

I tried this, which worked when I set the problem up on my own MySQL but failed the code test. Anyone know why?

select
case
when A>=B+C or B>A+C or C>=A+B then 'Not a triangle'
when A=B and B=C then 'Equilateral'
when A=B and B != C then 'Isosceles'
when A!=B and B!=C and A!=C then 'Scalene'
end as Type
from triangles;

Sorry, there was a logical error there, which I found by adding more examples. This now seems to work fine though, but it still doesn't like it:

select
case
when A>=B+C or B>A+C or C>=A+B then 'Not a triangle'
when A=B and B=C then 'Equilateral'
when (A=B and B!=C) or (A=C and C!=B) or (B=C and C!=A) then 'Isosceles'
when A!=B and B!=C and A!=C then 'Scalene'
else 'Balls Up'
end as Type
from triangles;

## Type of Triangle

You are viewing a single comment's thread. Return to all comments →

Help? MS SQL Server!

SELECT A,B,C, CASE WHEN ((A = B) AND (B <> C) OR (B = C) AND (A <> B) OR (A = C) AND (A <> B)) THEN 'Isosceles' WHEN ((A = B) AND (B = C) AND (A = C)) THEN 'Equilateral' WHEN ((A <> B) AND (B <> C) AND (A <> C) AND NOT ((A + B) <= C) OR ((A + C) <= B) OR ((C + B) <= A)) THEN 'Scalene' WHEN (((A + B) <= C) OR ((A + C) <= B) OR ((C + B) <= A)) THEN 'Not A Triangle' END FROM TRIANGLES ORDER BY 1,2,3;

select

case when a+b<=c or b+c<=a or a+c<=b then 'Not A Triangle' when a=b and b=c and c=a then 'Equilateral' when a=b or b=c or a=c then 'Isosceles'

else 'Scalene' end from TRIANGLES ;

first check for not a triangle condition, it worked for me...

Thank you so much, but for Equilateral, you only need to write 2 conditions, like a=b and a=c would be enough.

that was my problem, I needed to check for "Not A Triangle" condition first

SELECT "Isosceles" from TRIANGLES where ( ((A = B) or (A = C) or (C = B) ) and not ( A = B and A = C ) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B )) );

SELECT "Equilateral" from TRIANGLES where ( A = B and A = C );

SELECT "Scalene" from TRIANGLES where ( ((A <> B) and (A <> C) and ( B <> C )) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B )) );

SELECT "Not A Triangle" from TRIANGLES where (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B ));

Why does it says wrong answer ??

or this

CASE WHEN (((A = B) or (A = C) or (C = B) ) and not ( A = B and A = C ) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B ))) THEN SELECT "Isosceles"; WHEN ( A = B and A = C ) THEN SELECT "Isosceles"; WHEN (((A <> B) and (A <> C) and ( B <> C )) and not (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B ))) THEN SELECT "Scalene"; WHEN (( (A + B) < C ) or ( (C + B) < A ) or ( (C + A) < B )) THEN SELECT "Not A Triangle"; END CASE

I think you need to read about UNION for the first, the second the CASE should live inside the SELECT not the other way around. I've never seen it the other way around

case when a+b-c=c then 'equilateral'---what is wrong in this logic.. plz help

5+5-5 = 5 --> Ok 5+7-6=6 ----> Fail

Do Output only the triangle names

Donts 1.Remove column values 2.Remove order by 3.Only Equilateral, Scalene, Isocelese and Not A Triangle are expected outputs.. So 20,20,40 should be reported a 'Not A Triangle'. (This is confusing to me also)

Try it ..Cheers...

I tried this, which worked when I set the problem up on my own MySQL but failed the code test. Anyone know why?

select case when A>=B+C or B>A+C or C>=A+B then 'Not a triangle' when A=B and B=C then 'Equilateral' when A=B and B != C then 'Isosceles' when A!=B and B!=C and A!=C then 'Scalene' end as Type from triangles;

Sorry, there was a logical error there, which I found by adding more examples. This now seems to work fine though, but it still doesn't like it:

select case when A>=B+C or B>A+C or C>=A+B then 'Not a triangle' when A=B and B=C then 'Equilateral' when (A=B and B!=C) or (A=C and C!=B) or (B=C and C!=A) then 'Isosceles' when A!=B and B!=C and A!=C then 'Scalene' else 'Balls Up' end as Type from triangles;