2015-04-29 55 views
-1

我需要列出horse_idhorse_name對於具有放置在頂部3每個horse(例如是位置1,2或3)兩個或更多個倍。提示:嘗試使用WHERE...IN...子查詢和獲取數據從兩個表

我敢肯定,我將不得不從HORSE表,其中包括來自PRIZE表,其中包括列PLACE(把馬是horse_idhorse_name和數據獲取數據)。但PLACE表只有列EVENT_id,PlaceMoney,所以我不知道如何加入它的馬錶。

+1

你能否提供更多的細節在你的三個表請;像字段名稱/類型。 –

+0

應該有更多的表/列你沒有告訴我們。 –

+0

有一個我可以鏈接到的入口表。 ENTRY表列是Event_id,Horse_id,Place。可以以這種方式更好地工作,因爲該表中還有一個horse_id? – JerryMegur

回答

1

因爲您將它發佈到評論中而不是問題中,所以很難確定您的表格和數據,但請嘗試此操作。

select horse.* 
    from horse 
    inner join entry 
     on horse.horse_id = entry.horse_id 
    where entry.place <= 3 
    group by horse.horse_id 
    having count(horse.horse_id) >= 2 
+1

嗨。 正在獲取錯誤代碼1054. UNKNOWN COLUMN ENTRY.PLACE IN WHERE CLAUSE。嗯 – JerryMegur

+0

根據你在評論中發佈的內容,條目有一個地方欄。你可以請問所有表中的'show create table'的輸出,在問題中? –

+0

將在兩秒鐘內完成。儘管如此,隨着你發佈的內容,我在哪裏以及如何實施'兩次或更多次'部分?謝謝。 – JerryMegur

1
SELECT horse_id,name 
FROM HORSE 
WHERE horse_id IN 
(SELECT horse_id 
FROM ENTRY 
WHERE place <= 3 
GROUP BY horse_id 
HAVING count(horse_id) > 1); 
相關問題