我一直在尝试构建一个复杂的SQL查询来从表中获取一些与我需要“询问”无关的表。
实际案例:
我有四个表:用户,设备,首选项和user_devices。
问题是我需要获取在表首选项中将首选项“monday”设置为true的所有“devices.key”用户。
示例:我向数据库询问具有首选项monday的设备是否为true,并且我获得了一个包含两个设备密钥的数组。
此查询获取用户4的设备密钥,但我需要在数据库中将“monday”设置为true(1)来获取所有用户的de device密钥。
SELECT key FROM devices, user_devices WHERE devices.id = user_devices.device_id AND user_devices.user_id = 4
非常感谢。
答案 0 :(得分:2)
您可以尝试以下查询
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
显然,您必须检查并更正查询中首选项和用户表的列名,以匹配您的数据库列名。
答案 1 :(得分:0)
你可以尝试这个(我只是讨厌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
希望它会有所帮助