簡體   English   中英

從兩個不同的表但相同的數據庫中選擇 SQL 查詢

[英]Select SQL query from two different tables but same database

我想從兩個不同的表中選擇一個 sql 查詢。 但是兩個表都在同一個數據庫中。

這是我的 sql 代碼,“空氣、溫度、濕度、mq2”來自一個名為“pi_sensors_network”的表,而“Dust”來自另一個名為“pi_dust_sensor”的表。 我可以知道如何從 2 個不同的表但同一個數據庫中選擇空氣、溫度、濕度、mq2、灰塵嗎? 謝謝!

附帶說明一下,兩個表之間沒有關系。 我只想從兩個不同的表中獲取數據。

  $sql = "SELECT air, temp, humidity, mq2, Dust FROM pi_sensors_network ORDER BY time DESC LIMIT 1";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     // output data of each row

只需為每個表使用別名:

SELECT t1.air, t1.temp, t1.humidity, t1.mq2, t1.Dust As Dust1, t2.Dust As Dust2
FROM pi_sensors_network t1, 
pi_dust_sensor t2
ORDER BY time DESC LIMIT 1";

您在架構描述和查詢中遺漏了一些內容。 您在其中一個表中是否有一個字段引用另一個表中的等效記錄(即外鍵)? 如果是這樣,您可以使用 JOIN。 你沒有提到哪個表有time字段。

這是我對您想要的查詢的嘗試,但對未回答的問題進行了假設。 我假設您有一個字段pi_sensors_network.idpi_sensors_network表的主鍵。 我還假設有一個字段pi_dust_sensor.fkidpi_dust_sensor表中的行與pi_dust_sensor表中的行連接pi_sensors_network

SELECT air, temp, humidity, mq2, Dust
FROM pi_sensors_network INNER JOIN
    pi_dust_sensor ON pi_sensors_network.id = pi_dust_sensor.fkid
ORDER BY time DESC LIMIT 1

希望這將為您指明正確的方向。 如果你能回答我的問題,我很樂意更新我的答案。

您可以將兩個表的數據合並到一個對象中,然后可以使用您希望輸出的樣子:

SELECT * ( SELECT air, temp, height, mq2, '' As Dust,[time] FROM pi_sensors_network union all select '' as air, '' as temp, '' as濕度, '' as mq2, Dust As Dust,[ time] from pi_dust_sensor )base ORDER BY [TIME] DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM