Изменение ВЫБРАННЫХ возвращаемых значений с РЕГИСТРОМ

#mysql #select #case

#mysql #выберите #case

Вопрос:

Кто-нибудь может помочь мне с этим утверждением? Я пытаюсь получить количество шариков в объекте с емкостью помещения * количество

 SELECT 
object.id, object.name, 
location.address, 
location.postcode, 
location_city.`name`,

(
select
    case
            when object_room.object_room_type_id = 1 then (1 * object_room.quantity)
            when object_room.object_room_type_id = 2 then (2 * object_room.quantity)
            when object_room.object_room_type_id = 3 then (3 * object_room.quantity)
            when object_room.object_room_type_id = 4 then (5 * object_room.quantity)
            when object_room.object_room_type_id = 5 then (1 * object_room.quantity)
            when object_room.object_room_type_id = 6 then (4 * object_room.quantity)
            when object_room.object_room_type_id = 8 then (2 * object_room.quantity)
            when object_room.object_room_type_id = 9 then (3 * object_room.quantity)
    end CASE
from object_room

)



FROM object  
LEFT JOIN location ON object.location_id = location.id 
LEFT JOIN location_city ON location.location_city_id = location_city.id 
LEFT JOIN object_room ON object.id = object_room.object_id
 

Я получил эту ошибку:

 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE
from object_room
 

Комментарии:

1. Помочь вам сделать что? Для меня это выглядит нормально… Пожалуйста, включите описание ошибки или проблемы, с которой вы столкнулись.

2. CASE требуется a WHEN в условии…

3. Привет. Спасибо за ответ. Я исправил синтаксис (КОГДА) и добавил сообщение об ошибке

Ответ №1:

Пожалуйста, прочитайте руководство MySQL по инструкции case :

 case object_room.object_room_type_id
        when 1 then (1 * object_room.quantity)
        when 2 then (2 * object_room.quantity)
        when 3 then (3 * object_room.quantity)
        when 4 then (5 * object_room.quantity)
        when 5 then (1 * object_room.quantity)
        when 6 then (4 * object_room.quantity)
        when 8 then (2 * object_room.quantity)
        when 9 then (3 * object_room.quantity)
end
 

Ответ №2:

Либо у вас есть таблица object_room_type , либо вы должны ее создать. Я предположил, что вы вызываете столбец вместимости помещения capacity . Затем вы можете присоединиться к object_room_type таблице в своем запросе:

 SELECT 
object.id, object.name, 
location.address, 
location.postcode, 
location_city.`name`,
object_room_type.capacity * object_room.quantity
FROM object  
LEFT JOIN location ON object.location_id = location.id 
LEFT JOIN location_city ON location.location_city_id = location_city.id 
LEFT JOIN object_room ON object.id = object_room.object_id
LEFT JOIN object_room_type ON object_room_type.object_room_type_id = object_room.object_room_type_id