Как выбрать самую последнюю запись, а затем запросить ее на основе ее значений? - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь выполнить запрос и вытянуть результаты в таблицу на PHP.

Запрос работает, однако он не завершает самую необходимую часть.

Мне нужназапрос, чтобы иметь возможность выбрать самую последнюю запись, ТОГДА проверьте, является ли RSSI БОЛЬШЕ, чем -60, однако его выбор самой записи записи, ГДЕ RSSI БОЛЬШЕ, чем -60.

Например, если пользователь«присутствует», что означает, что их RSSI меньше -60, однако, если они перемещаются дальше, а их RSSI изменяется на -70, то их не следует искать в этом запросе, однако запрос выбирает самый последний случай, когда онибольше -60.

Ниже мой код:

SELECT studentDetails.firstName,studentDetails.lastName,studentDetails.pictureLocation,probeSniffer.mac_address,probeSniffer.time_Stamp,probeSniffer.rssi,MAX(probeSniffer.time_Stamp) FROM probeSniffer
                Inner join studentDetails
                On probeSniffer.mac_address=studentDetails.mac_address
                WHERE probeSniffer.mac_address
                in 
                (SELECT probeSniffer.mac_address FROM probeSniffer WHERE probeSniffer.time_Stamp between (time('now', 'localtime', studentDetails.time_Range)) AND time('now', 'localtime'))
                AND probeSniffer.mac_address in (SELECT probeSniffer.mac_address FROM probeSniffer WHERE probeSniffer.rssi <= 0 AND probeSniffer.rssi >= studentDetails.rssi_range order by probeSniffer.time_Stamp desc)
                GROUP BY probeSniffer.mac_address

Это забирает пользователя, однако, если они уходят, они все еще подобраны.

Есть идеи?

СОЗДАТЬ ТАБЛИЦЫ:

CREATE TABLE probeSniffer (logID INTEGER UNIQUE, mac_address TEXT,vendor TEXT,ssid TEXT, date_Stamp TEXT, time_Stamp TEXT, rssi NUMERIC, bssid TEXT, PRIMARY KEY(logID))
CREATE TABLE `studentDetails` ( studentID INTEGER UNIQUE, firstName TEXT, lastName TEXT, mac_address TEXT, pictureLocation TEXT, rssi_range TEXT, time_Range TEXT, PRIMARY KEY(studentID) )

РЕЗУЛЬТАТ:

"Jason" "Mills" "images/man.png"    "00:04:4b"  "15:05:16"  "-70"   "15:05:16"

"Andy"  "Harvey"    "images/man.png"    "8c:f5:a3"  "15:02:22"  "-79"   "15:02:22"

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ: Нет, так как последние значения RSSI меньше -60,однако его собирает самую последнюю запись о том, чтоru Они были больше -60.

Например, если вы немного изменили запрос:

SELECT studentDetails.firstName,studentDetails.lastName,studentDetails.pictureLocation,probeSniffer.mac_address,probeSniffer.time_Stamp,probeSniffer.rssi,MAX(probeSniffer.time_Stamp) FROM probeSniffer
                    Inner join studentDetails
                    On probeSniffer.mac_address=studentDetails.mac_address
                    WHERE 
                    probeSniffer.time_Stamp between (time('now', 'localtime', studentDetails.time_Range)) AND time('now', 'localtime')
                    AND probeSniffer.rssi >= studentDetails.rssi_range
                    GROUP BY probeSniffer.mac_address

Результат будет:

"Jason" "Mills" "images/man.png"    "00:04:4b"  "15:05:42"  "-60"   "15:05:42"

"Andy"  "Harvey"    "images/man.png"    "8c:f5:a3"  "14:43:13"  "-49"   "14:43:13"

INSERT INTO:

INSERT INTO `studentDetails`(`studentID`,`firstName`,`lastName`,`mac_address`,`pictureLocation`,`rssi_range`,`time_Range`) VALUES (NULL,Andy,Harvey,8c:f5:a3,images/man.png,-60,-60 minutes);
INSERT INTO `studentDetails`(`studentID`,`firstName`,`lastName`,`mac_address`,`pictureLocation`,`rssi_range`,`time_Range`) VALUES (NULL,Jason,Mills,8c:f5:a4,images/man.png,-60,-60 minutes);
INSERT INTO `studentDetails`(`studentID`,`firstName`,`lastName`,`mac_address`,`pictureLocation`,`rssi_range`,`time_Range`) VALUES (NULL,Bob,Harris,8c:f5:a5,images/man.png,-60,-60 minutes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...