SQLITE: Как выбрать значение столбца на основе разных столбцов в другой таблице - PullRequest
1 голос
/ 27 января 2020

Я заранее извиняюсь, потому что понятия не имею, как структурировать этот вопрос. У меня есть следующие таблицы:

Sessions:
+----------+---------+
| login    | host    |
+----------+---------+
| breilly  | node001 |
+----------+---------+
| pparker  | node003 |
+----------+---------+
| jjameson | node004 |
+----------+---------+
| jjameson | node012 |
+----------+---------+

Userlist:
+----------+----------------+------------------+
| login    | primary_server | secondary_server |
+----------+----------------+------------------+
| breilly  | node001        | node010          |
+----------+----------------+------------------+
| pparker  | node002        | node003          |
+----------+----------------+------------------+
| jjameson | node003        | node004          |
+----------+----------------+------------------+

Какой тип запроса SQL мне следует выполнить, чтобы получить такую ​​таблицу?:

+----------+---------+------------+
| login    | Host    | Server     |
+----------+---------+------------+
| jjameson | node004 | Secondary  |
+----------+---------+------------+
| jjameson | node012 | Wrong Node |
+----------+---------+------------+
| pparker  | node003 | Secondary  |
+----------+---------+------------+
| breilly  | node001 | Primary    |
+----------+---------+------------+

В настоящее время я просто использую Go с кучей структур / хэш-карт для генерации этого. Я планирую перенести пользователей / сеансы в базу данных sqlite, находящуюся в памяти, но я не могу обернуться вокруг запроса, чтобы получить таблицу такого типа.

Столбец Server в зависимости от того, вошел ли пользователь в систему на своем основном / дополнительном или неправильном компьютере.

Я поместил это также в SQL Fiddle

1 Ответ

2 голосов
/ 27 января 2020

Использование case logi c:

select s.*,
       (case when s.host = ul.primary_server then 'primary'
             when s.host = ul.secondary_server then 'secondary'
             else 'wrong node'
        end) as server
from sessions s left join
     userlist ul
     on s.login = ul.login;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...