#mysql
#mysql
Вопрос:
У меня есть таблица пользователей и таблица контактной информации, чтобы у каждого пользователя могло быть несколько телефонных номеров и несколько адресов электронной почты. Есть ли стандартный способ установить и получить их основную контактную информацию?
таблица «люди»
ID | name
1 | John
2 | Joan
таблица «human_contact»
ID | contact_type | contact_info | user_id
1 | email | john@a.com | 1
2 | email | johnny@b.net | 1
таблица «билеты»
ID | human_id | event_date
1 | 1 | 2017-08-01
если Джон обычно использует johnny@b.net , как мне пометить эту строку как его любимую и получить ее для большинства запросов?
SELECT *
FROM tickets
LEFT JOIN humans
ON tickets.human_id=humans.ID
LEFT JOIN human_contact
ON human_contact.human_id=humans.ID
WHERE tickets.ID='112'
Комментарии:
1. Что находится в таблице tickets?
2. @kbball, я отредактировал выше и добавил таблицу «билеты» 🙂 спасибо
3. Итак, как мы должны выбрать, какой contact_info сделать избранным?
4. @kbball это часть того, что я спрашиваю
Ответ №1:
Вы можете использовать дополнительный coloumn с именем fav, который будет иметь логические значения. Это может помочь вам сначала определить, есть ли у него какие-либо избранные, используя проверку, где fav==true, а затем продолжить с этим contact_info , или, если у пользователя нет избранных, перейдите к вашему обычному запросу.
Это,
if( query( fav==1 for atleast 1 tuple )){
return tuple with fav==1;
else{
query ( usual query to get contact_info );
return query_resu<
}
для более легкого понимания.Надеюсь, это поможет.
Комментарии:
1. Извините, не могли бы вы поместить это в полную форму запроса? Я не понимаю кортеж, и я никогда не использовал if в запросе