簡體   English   中英

SQL查詢從另一個表中獲取數據

[英]SQL query to fetch data form another table

我一直在嘗試構建一個復雜的SQL查詢來從表中獲取一些與我需要“詢問”無關的表。

實際案例:

我有四個表:用戶,設備,首選項和user_devices。

  • 表用戶,有用戶信息和用戶“ID”。
  • 表設備有列設備信息,設備“ID”(設備ID)和設備“密鑰”(設備內部ID)。
  • 表格首選項,“用戶ID”和一些工作日的布爾字段(星期一,星期二,星期三......)。
  • 表user_devices,分配ID(auto_increment,not important),“user_id”和“device_id”以及與各自表的關系。 此tabble用於將設備分配給用戶。

問題是我需要獲取在表首選項中將首選項“monday”設置為true的所有“devices.key”用戶。

示例:我向數據庫詢問具有首選項星期一的設備是否為真,我獲得了一個帶有兩個設備密鑰的數組。

該查詢獲取用戶4的設備密鑰,但是我需要在數據庫中將“monday”設置為true(1)來獲取所有用戶的de device key。

SELECT key FROM devices, user_devices WHERE devices.id = user_devices.device_id AND user_devices.user_id = 4

非常感謝你。

你可以嘗試以下查詢

SELECT `devices`.`key` 
FROM users 
JOIN preferences ON users.id = preferences.user_id
JOIN user_devices ON users.id = user_devices.user_id
JOIN devices ON user_devices.device_id = devices.id
WHERE preferences.monday = true

顯然,您必須檢查並更正查詢中的首選項和用戶表的列名,以匹配您的數據庫列名。

你可以嘗試這個(我只是討厭JOIN; p):

SELECT DISTINCT(`devices`.`key`)
FROM `devices`,`user_devices`,`preferences`
WHERE `devices`.`id` = `user_devices`.`device_id`
  AND `preferences`.`user_id` = `user_devices`.`user_id`
  AND `preferences`.`monday` = 1

希望它會有所幫助

暫無
暫無

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

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