2013-11-14 52 views
0

幫助,我需要使用左連接。我有兩張桌子; Horse_table,它有horse_id,名字。 Entry_Table,其中有horse_id,地點。 我需要列出從未贏過第一名的馬匹和馬匹名稱。按horse_id排序。兩張表左連接語法

這是我的;

Select a.horse_id, a.name, 
COALESCE ('place'>=1) as 'Never Won First Place' 
From horse a LEFT JOIN entry b 
ON (a.horse_id=b.horse_id) 
AND (b.horse_id=a.name) 
Where Horse_id<=502 
ORDER by Horse_id; 

的問題,這是它返回所有的馬,而不是它應該,我一直在使用Where b.place>=1試過的人,但它不返回任何結果。

+0

您是否嘗試在您的From子句中切換表格?選擇...從條目b LEFT JOIN馬a ON(b.horse_id = a.horse_id)where place> = 1 – charlieparker

+2

我想你應該從查詢中移除AND(b.horse_id = a.name)。 – Hussain

+0

正確的DDL總是有用的。 – Strawberry

回答

0

嘗試這樣:

SELECT a.horse_id, 
    a.NAME 
FROM horse a 
INNER JOIN (
    SELECT horse_id, min(place) 
    FROM ENTRY 
    GROUP BY horse_id 
    HAVING MIN(place) > 1 
) b ON a.horse_id = b.horse_id 
ORDER BY Horse_id; 

你加入與他曾經完成的最好的位置(MIN(PLACE))馬錶,只要該位置不第一名。

0

列出位置大於1的所有馬匹和馬匹名稱(表示從未獲得第一個位置)。

Select 
    a.horse_id, a.name, 
From 
    horse a 
INNER JOIN 
    entry b 
ON 
    a.horse_id=b.horse_id 
Where 
    b.place>1 
ORDER by a.horse_id;