MySQL 特定のカラムの重複を避けてLEFT JOINで結合したいです。
結合したいテーブルは以下の二つです。
animal
1+----+-------------+----------+-----+ 2| id | Jananese | English | age | 3+----+-------------+----------+-----+ 4| 1 | 犬 | dog | 4 | 5| 2 | 猿 | monkey | 8 | 6| 3 | 猫 | cat | 1 | 7| 4 | 鳥 | bird | 2 | 8| 5 | ライオン | lion | 9 | 9+----+-------------+----------+-----+
staff
1+----+------------+-------------+------+ 2| id | animal_id | staff_no | sex | 3+----+------------+-------------+------+ 4| 1 | 1 | ueno_001 | M | 5| 2 | 2 | ueno_002 | F | 6| 3 | 1 | ueno_003 | M | 7| 4 | 3 | ueno_004 | F | 8| 5 | 3 | ueno_004 | F | 9+----+------------+-------------+------+
そして、以下のようなLEFT JOINを使って以下のような結果を求めています。
求める表示結果 +----+------------+----------+----------+ | id | staff_no | Jananese | English | +----+------------+----------+----------+ | 1 | ueno_001 | 犬 | dog | | 2 | ueno_002 | 猿 | monkey | | 3 | ueno_003 | 犬 | dog | | 4 | ueno_004 | 猫 | cat | +----+------------+------- --+----------+
ですが、staff_numberの部分の重複を避けたいのですが、うまくできません。
現在のコードを出力結果は以下の通りです。
現在のコード SELECT animal.id, staff_no, Jaopanese, English FROM staff LEFT JOIN animal ON staff.animal_id = animal.id ;
現在の結果 +----+------------+-------------+----------+ | id | staff_no | Jananese | English | +----+------------+-------------+----------+ | 1 | ueno_001 | 犬 | dog | | 2 | ueno_002 | 猿 | monkey | | 3 | ueno_003 | 犬 | dog | | 4 | ueno_004 | 猫 | cat | | 5 | ueno_004 | 猫 | cat | +----+------------+-------------+----------+
staff_noのカラムの値の重複をさけ、ueno_004の表示を見本のように一回にしたいです。
distinctなども使ってみたのですが、うまく行きませんでした。
特定のカラムのみ重複を避けるにはどうしたら良いでしょうか?
アドバイスお願いいたします。
staffテーブルで、同一staff_noで、別animal_idだった場合、どういう結果を想定されていますか?
例えば、以下の場合とか
| id | animal_id | staff_no | sex |
| 6 | 1 | ueno_005 | F |
| 7 | 2 | ueno_005 | M |
ありがとうございます。正直なところ、求める結果の表示にとらわれ、同一staff_noで、別animal_idの場合を想定していなかったです。
同一staff_noで、別animal_idだった場合は、staff_noが二回表示されるようにしたいと思います。
各ナンバーのスタッフがお世話する動物が表示され、かつ、上から順に1,2,3,4...と、一番左のIDカラムに順に番号が割りふられるイメージです、
なんか不思議なテーブル設計ですね。
animal=飼育している動物、staff=飼育員 ということでしょうか?
飼育員「ueno_004」は男性なのですか、女性なのですか?
私のテーブル設計に問題がありました・・すみません。
「ueno_004」のsexをFに統一しました。
性別の設定はあまり意味はなく、LEFT JOINを使って、id | staff_no | Jananese | English のカラムを結合するという意図飲みで作ったテーブルでした。そのため、設定としてよくないテーブルになってしまいました。すみません。
回答3件
あなたの回答
tips
プレビュー