Mysql 从多个表中的变量进行查询
我快疯了 我想Mysql 从多个表中的变量进行查询,mysql,Mysql,我快疯了 我想 SELECT `id` FROM `colors` WHERE `colors.id=1` AND `cars.user=1` AND `colors.car=cars.id` 从我的桌子上 users id, name 1, Nicolas 2, John cars id, user, name 1, 1, Mercedes 2, 2, Ferrari colors id, car, name 1, 1, Black 2, 2, Red 这个
SELECT `id` FROM `colors`
WHERE `colors.id=1`
AND `cars.user=1`
AND `colors.car=cars.id`
从我的桌子上
users
id, name
1, Nicolas
2, John
cars
id, user, name
1, 1, Mercedes
2, 2, Ferrari
colors
id, car, name
1, 1, Black
2, 2, Red
这个数据库意味着,尼古拉斯拥有黑色梅赛德斯,约翰拥有红色法拉利。
例如,如果我使用SELECT语句,其中colors.id=1和cars.user=2,它需要返回一个空结果。使用JOIN从所有表中获取结果
SELECT u.name AS UserName, c.name AS CarName, col.name AS CarColor FROM users AS u
JOIN cars AS c ON (c.user = u.id)
JOIN colors AS col on (col.car = c.id)
WHERE u.id = 1;
如果你问我,你的数据库模式是错误的。您应该有一个表用于汽车,一个表用于用户,一个表用于颜色,然后有一个额外的表将整个内容与汽车id、颜色id和用户id作为字段链接在一起。你可以很容易地使用连接之类的东西。是的,或者只是在颜色上添加用户。。。然后我将选择colors.id和colors.user更容易。不,这在数据库规范化方面同样是错误的。既然规范化的方式是合乎逻辑的,为什么还要换一种方式呢?你把这些东西放在不同的桌子上,因为你觉得你必须。。。按照我建议的方式进一步推进,它将更加防弹,您的插入/更新查询将更加容易编写。谢谢,我会这样做的!