2012-06-06 146 views
1

我不知道這個問題的條款,標題可能有點誤導。MySQL從內連接中選擇1行

我想創建一個1到很多表的概述,但只想選擇1個關係表的例子。

車表

name 
id 

汽車顏色

car_id 
color 

一輛車可以有許多不同的顏色。不過,我想爲「概覽」選擇一種顏色。我怎樣才能做到這一點?我的嘗試導致許多結果與同一汽車行的多種顏色。

如果可能,最好在一個查詢中。

在此先感謝

編輯:

我想我的問題是模糊的。我試圖選擇車內的所有車輛,但只有一種顏色(它遇到的第一輛車)。

Foo  blue 
Bar  blue 
Barfoo yellow 

但是富有顏色,藍色,黃色,紅色,黑色等

至於表創建查詢,這是一個「虛擬」的版本。我只是試圖學習如何通過推向正確的方向來解決這個問題。

+0

你能發表你試過的嗎? –

+0

告訴我們你也試過了,請發表SHOW CREATE TABLE的輸出 – rkosegi

回答

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 
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 
0

SUBQUERY

select cc.color from CarColours cc,Car c where cc.car_id = c.id and c.id = 1 limit 1 
+0

對不起,它不是一個子查詢,它是一個連接查詢 – prakash