MySQL соединяет 3 таблицы без отношения и берет из них последние данные - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть три таблицы в базе данных mySQL, и я хочу получить только 1 ПОСЛЕДНИЕ ВВЕДЕННЫЕ ДАННЫЕ из всех трех таблиц (последние введенные данные из таблицы1, последние введенные данные из таблицы2, последние введенные данные из таблицы3). Мне удалось получить первые введенные данные всех таблиц следующим образом:

SELECT dnevna.temp AS temp1, dnevna.hum AS hum1, podrum.temp AS temp2, podrum.hum AS hum2, spremnik_status.spremnik AS status_spremnik
FROM dnevna, podrum,spremnik_status
LIMIT 1

поэтому я попытался ввести последние введенные данные следующим образом:

SELECT dnevna.temp AS temp1, dnevna.hum AS hum1, podrum.temp AS temp2, podrum.hum AS hum2, spremnik_status.spremnik AS status_spremnik
FROM dnevna, podrum, spremnik_stauts
ORDER BY dnevna.id, podrum.id,spremnik_stauts.id DESC
LIMIT 1

но я получил ошибку, и это не очень хороший способ сделать это .. так как это сделать?

Нет связи между таблицами, потому что таблицы обновляются случайным образом на 2 микроконтроллера, которые загружают данные в разное время, поэтому время, идентификатор автоинкремента и т. Д. Не могут совпадать. Кроме того, у меня в 2 из 3 таблиц одинаковые имена столбцов (temp, hum - одинаковые имена столбцов в 2 таблицах .. так в чем проблема? Нужно ли переименовывать?)

Мне нужно, чтобы sql select сделал ОДНУ php строку JSON из 3 таблиц, чтобы потом можно было ее кодировать для Android-студии, чтения MCU-u и т. Д.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018
SELECT  tb1.temp as temp1, tb1.hum  as hum1, 
    tb2.temp AS temp2, tb2.hum AS hum2,   
    tb3.spremnik AS status_spremnik
FROM 
(SELECT * FROM dnevna ORDER BY id DESC LIMIT 1) AS tb1,
(SELECT * FROM podrum ORDER BY id DESC LIMIT 1) AS tb2,
(SELECT * FROM spremnik_status ORDER BY id DESC LIMIT 1) AS tb3
0 голосов
/ 03 ноября 2018

Вы можете извлечь последнюю запись из каждой таблицы и объединить эти три запроса:

SELECT     *
FROM       (SELECT   temp AS temp1, hum AS hum1
            FROM     dnevna
            ORDER BY id DESC
            LIMIT    1) a
CROSS JOIN (SELECT   temp AS temp2, hum AS hum2
            FROM     podrum
            ORDER BY id DESC
            LIMIT    1) b
CROSS JOIN (SELECT   spremnik AS status_spremnik
            FROM     spremnik_status
            ORDER BY id DESC
            LIMIT    1) c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...