[英]Using a SELECT query to get data from two different tables in database
[英]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.id
是pi_sensors_network
表的主鍵。 我還假設有一個字段pi_dust_sensor.fkid
將pi_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.