0

帮助,我需要使用左连接。我有两张桌子;Horse_table,其中有 horse_id,名称。Entry_Table,其中有 horse_id,放置。我需要列出从未获得过第一名的马的 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但它没有返回任何结果。

4

2 回答 2

0

列出所有位置大于 1 的马 id 和马名(意味着从未获得第一位置)。

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;
于 2013-11-14T12:08:38.700 回答
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))的马桌。

于 2013-11-14T12:04:27.697 回答