1

我不知道这个问题的术语,标题可能有点误导。

我正在尝试创建一对多表的概述,但只想选择关系表的 1 个示例。

车桌

name
id

汽车颜色

car_id
color

一辆车可以有许多不同的颜色。但是,我只想为“概览”选择一种颜色。我怎样才能做到这一点?我的尝试产生了很多结果,同一车排有多种颜色。

如果可能的话,最好在一个查询中。

提前致谢

编辑:

我认为我的问题含糊不清。我正在尝试选择汽车表中的所有汽车,但只有一种颜色(它遇到的第一个颜色)。

Foo     blue
Bar     blue
Barfoo  yellow

ETC

然而 Foo 有颜色,蓝色,黄色,红色,黑色等。

至于表创建查询,这是一个“虚拟”版本。我只是想学习如何通过朝着正确的方向努力来解决这个问题。

4

3 回答 3

1

您需要这样的查询:

SELECT * FROM car
INNER JOIN car_color ON car.id = car_color.car_id 
LIMIT 1 -- this will limit the results to only one row

编辑:要为汽车获得一种颜色,您可以使用组:

SELECT * FROM car
INNER JOIN car_color ON car.id = car_color.car_id 
GROUP BY car.id -- this will group all the rows with the same car to only one row per car
于 2012-06-06T12:22:52.163 回答
0
How about this.

    CREATE table car(name varchar(10),id int primary key);
    CREATE table car_details(car_id int foreign key references car(id), color varchar(20));

    INSERT into car values('BMW',1);
    INSERT into car_details values(1,'Blue');

    INSERT into car values('toyota',2);
    INSERT into car_details values(2,'pink');

    SELECT * FROM
    car c INNER join car_details cd
    on c.id = cd.car_id
    limit 1;

    Results in.    

    name       id          car_id      color
---------- ----------- ----------- --------------------
    BMW        1           1           Blue
于 2012-06-06T12:25:38.240 回答
0

子查询

select cc.color from CarColours cc,Car c where cc.car_id = c.id and c.id = 1 limit 1 
于 2012-06-06T12:31:46.617 回答