繁体   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