質問: 種類テーブル.管轄) order by 水族館テーブル.順番 ------------------------ そうすると、添付画像の1のような結果になります。 水族館テーブルから、サブクエリにて生物テーブルから取得した「管轄」列およびcount関数で「管轄」列に入っているデータを集計した列がselectで選択され、結果が「seibutsu」列として、「都道府県ID」列とともに表示されます。 そして上記のクエリのうち、"()"で囲まれたサブクエリの中のSQL、 ------------------------ select 管轄,count(管轄) as seibutsu from 生物テーブル where 20200601 group by 管轄 ------------------------ だけを実行すると、添付画像の2のような結果が出てきます。
回答: 水族館テーブルと、生物テーブルへの副問い合わせの結果を結びつけるキーがないために、質問されているような状態になってます。 添付された画像にある3の見た目を作るために、こじつけて考えると、水族館テーブルの都道府県ID に 100 を足したものが生物テーブルの管轄になっているように見えるので、以下のような SQL とかになります。 ``` select 水族館テーブル.都道府県ID,種類テーブル.管轄,種類テーブル.seibutsu from 水族館テーブル left join (select 管轄,count(管轄) as seibutsu from 生物テーブル where 20200601 group by 管轄 ) 種類テーブル on (水族館テーブル.都道府県ID + 100 = 種類テーブル.管轄) order by 水族館テーブル.順番 ``` * 外側の select に、種類テーブル.管轄を追加 * left join の結合条件(on)で、都道府県ID + 100 と水族館テーブルの管轄を比較 * 意味のない where(常に真)は、敢えて残してあります 質問の世界で考えて見ると、生物テーブルの管轄は水族館のID かと思います。 水族館テーブルの方を見ると、auto increment と思われる順番はありますが、水族館を一意に表すID がありません。 そう思うと、以下のようになるのが自然なのかな、と想像します。 * 水族館テーブルに、水族館を表すID(水族館ID)を作る * 実行する SQL の on は、水族館テーブル.水族館ID = 種類テーブル.管轄