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更容易。不,这在数据库规范化方面同样是错误的。既然规范化的方式是合乎逻辑的,为什么还要换一种方式呢?你把这些东西放在不同的桌子上,因为你觉得你必须。。。按照我建议的方式进一步推进,它将更加防弹,您的插入/更新查询将更加容易编写。谢谢,我会这样做的!