2015-09-16 2 views
0

У меня есть две таблицы: «login» и «acc_reg_num».MySQL Присоединяйтесь к двум таблицам, отображающим «0» в одном столбце, на основе значения другого столбца

Таблица «входа» имеет две колонки: «account_id» и «userid». (Использование префикса «l»)
«acc_reg_num» имеет три: «accound_id», «key» и «value». (Использование префикса «a»)

Мне нужно вставить столбец «a.value» в таблицу «login». В зависимости от значения в «a.key»: если «a.key» - «SAMPLEVALUE», используйте значение «a.value». Но, если «a.key» - это [что-нибудь еще], то вместо этого установите «0» в «a.value».

Надеюсь, это ясно. Мой текущий запрос выглядит так, но он показывает повторяющиеся результаты и значения в «a.value», независимо от того, «a.key» - «SAMPLEVALUE» или нет.

SELECT l.account_id, l.userid, a.value AS 'CashPoints' 
FROM login AS l 
LEFT JOIN acc_reg_num AS a ON a.account_id = l.account_id 

Мне также не нужны дубликаты для столбцов l.account_id и l.userid.

ответ

1

Вы можете добавить условие a.key='SAMPLEVALUE' к существующему ПО условию:

SELECT l.account_id, l.userid, COALESCE(a.value, 0) AS 'CashPoints' 
FROM 
    login AS l LEFT JOIN acc_reg_num AS a 
    ON a.account_id = l.account_id AND a.key='SAMPLEVALUE' 

в случае нет SAMPLEVALUE объединения не будет успешным и a.value будет NULL, то вы можете использовать, чтобы получить COALESCE 0 вместо NULL.

+0

О мой бог, я знал, что это было что-то я знаю, din't еще: «COALESCE». Я сейчас об этом прочитаю. Большое спасибо! –

0

Вы можете использовать CASE заявление для этого, как

SELECT l.account_id, l.userid, 
CASE WHEN a.key = 'SAMPLEVALUE' THEN a.value ELSE '0' END AS 'CashPoints' 
FROM login AS l 
LEFT JOIN acc_reg_num AS a ON a.account_id = l.account_id