Это работа для объединений - PullRequest
0 голосов
/ 09 февраля 2012

Просто ищу лучшее направление, а не решение.

У меня есть две таблицы - A, B

Таблица A имеет IP-адрес и время (время будет равно или равновремя начала и окончания)

Таблица B содержит имя пользователя, время начала, время окончания, IP-адрес

В задании, я пытаюсь выяснить, какой IP-адрес и время в таблице A соответствуют имени пользователя в таблицеB.

В более общем смысле, кто (имя пользователя) использовал определенный IP-адрес в определенное время.

Если мое объяснение имеет смысл, кажется ли, что что-то с помощью объединений может быть достигнуто между двумятаблицы?Если нет, то каков следующий лучший шаг.Я стараюсь избегать большого количества ручных запросов из одной таблицы в другую.

Любое направление приветствуется, спасибо.

Ответы [ 3 ]

6 голосов
/ 09 февраля 2012

Да, соединение подходит. Условие должно быть составным условием, которое соответствует как IP-адресу, так и временным ограничениям.

select B.username, A.ipaddress, A.time
 from A inner join B on A.ipaddress = B.ipaddress 
                        and A.time between B.starttime and B.endtime
1 голос
/ 09 февраля 2012

Да - это именно та ситуация, в которой вы должны использовать JOIN.

    SELECT x, y, z
      FROM a
INNER JOIN b ON a.ip_address = b.ip_address
0 голосов
/ 09 февраля 2012
SELECT *
FROM a
INNER JOIN b
WHERE a.ip_address = b.ip_address 
    AND b.starttime <= a.time 
    AND a.time <= b.endtime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...