1

Name と Horse_id を含む horse と呼ばれる 2 つのテーブルを照会する必要があります。 Horse_id と Place を含む entry と呼ばれる 1 つです。(場所とは、馬が来た場所です。例: 1st、2nd、3rd)。

サブクエリを使用して、1 位 2 位または 3 位を複数回獲得したすべての馬の名前と ID を表示する必要があります。

これまでのところ(「複数回」の部分にはまだ到達していません)

SELECT horse_id, name FROM 
(SELECT count(place) AS horse_id, name FROM entry)
WHERE entry.place<3;

これは機能していませんが。エラーは「すべての派生テーブルには独自のエイリアスが必要です」です。何と名付けたらよいかわかりませんし、この種のクエリの例を見つけるのが難しいと感じています。

私も試しました:

SELECT horse_id, name FROM horse
WHERE place IN(SELECT horse_id FROM entry WHERE entry.place<3);

どこが間違っているのかわからない

4

4 に答える 4

0
SELECT horse_id, name, SUM(IF(place<=3,1,0)) AS top_3_count
FROM horse
JOIN entry USING (horse_id)
GROUP BY horse_id
HAVING top_3_count > 1
于 2012-07-24T23:29:55.787 に答える
0
SELECT Horse_id,Name FROM HORSE
WHERE Horse_id IN 
(SELECT Horse_id FROM ENTRY WHERE Place IN (1,2,3) GROUP BY Horse_id HAVING COUNT(Horse_id)>1); 
于 2014-11-06T06:15:50.907 に答える
0

申し訳ありませんが、質問をもっとよく読むべきでした..システムにテーブルを作成しただけで、これは機能します:

select name, horse_id 
FROM horse LEFT JOIN 
(select horse_id, count(horse_id) as c FROM entry where place < 4 group by horse_id) as h 
USING (horse_id) WHERE c > 1;
于 2012-07-24T23:26:15.277 に答える
0

最も簡単な解決策は次のとおりです。

SELECT horse_id, name FROM 
(SELECT count(place) AS horse_id, name FROM entry WHERE entry.place<3) as cute_little_ponies;
于 2012-07-24T23:27:52.997 に答える