1

この問題の用語がわかりません。タイトルが少し誤解を招く可能性があります。

1 対多テーブルの概要を作成しようとしていますが、リレーション テーブルの例を 1 つだけ選択したいと考えています。

カーテーブル

name
id

車の色

car_id
color

車にはさまざまな色があります。ただし、「概要」には 1 つの色だけを選択したいと考えています。これどうやってするの?私の試行では、同じ車の列の複数の色で多くの結果が得られます。

可能であれば、できれば 1 つのクエリで。

前もって感謝します

編集:

私の質問は漠然としていると思います。car テーブル内のすべての車を選択しようとしていますが、1 つの色 (最初に出くわしたもの) のみを選択しようとしています。

Foo     blue
Bar     blue
Barfoo  yellow

ただし、Foo には、青、黄、赤、黒などの色があります。

テーブル作成クエリに関しては、これは「ダミー」バージョンです。私はちょうど正しい方向へのプッシュでこの問題を解決する方法を学ぼうとしています.

4

3 に答える 3

1

You need a query like this:

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

edit: to get only one color for a car you can use group:

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

サブクエリ

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 に答える
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 に答える