- ベストアンサー
重複データを一つずつ表示したい!MySQLを使ってデータベース操作する方法を教えてください。
- MySQLを使用して重複したデータを個別に表示する方法を教えてください。添付画像のように、attachment_nameは画像ですが、item_idに重複があります。どれでも構いませんので、各データを一つずつ表示したいです。
- 質問者は、MySQLの命令文を試行錯誤していますが、うまくいっていません。getfeatured01という関数でデータを取得していますが、結合などがうまくいっていないようです。提供されたMySQLコマンドを基に、質問者にMySQLを教える方法についてアドバイスしてください。
- 質問者は、MySQLの基本的な知識が不足しているため、理解するのが難しいと感じています。そのため、具体的なMySQLの操作方法や指導を求めています。MySQLの指導をお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 MySQLはちょっと特殊で・・・、 特定のカラムで「GROUP BY」した時、残りのカラムは適当に選ばれて出力されます。 一般的にはエラーになるはずですが、MySQLはエラーになりません・・・。 なので、要件的に「attachment_name」がどれでもいいのなら、SQLの一番外側で、「item_id」だけで「GROUP BY」してみてください。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
なにがやりたいのか解らないのでとりあえず・・ item_idを複数あったときに一つだけ表示したいなら とりあえずgroup by item_idするのが妥当でしょう。 ただし、item_idによってデータのユニークが保証されていないわけですから その他の項目はどれを優先して表示したいのか仕様をきめこむ必要があります。 そもそもattachmentテーブルではアイテムのidをどうやってユニークに 管理しているのでしょうか? それととりあえず 基本ができていないと自覚しているなら SELECT *というワイルドカードをつかうのはやめた方がいいです。 あれ単なるデバッグなどにちょろっとだけ使うものです。 どんなに項目が多くても列記してください。
お礼
ありがとうございます。 そうですね、どの項目を表示したいかという考え方が浅い感じがします。 http://neosystem1.net/kotobuki-test/ このホームページの注目の物件のカスタマイズをしていまして、お客様から 画像を入れてほしいという要望でしたので、試行錯誤しながらしていました。 それで、画像は表示されるようになっていますが、画像が保管されている分出力されてしまい 悩んでいます。 SELSCT文の*はデバッグ用なのですね、列記して入力します。 貴重なご意見ありがとうございました。
お礼
ありがとうございます。 GROUP BYという命令というのは、すごいですね。 やはり、本だけの知識では難しいですね。 MYSQL文にGROUP BY命令を追加することによって、 綺麗に整理されました。 ありがとうございました。 感謝感激です!!