• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのテーブルからデータ取得)

2つのテーブルからデータ取得

このQ&Aのポイント
  • 2つのテーブルからデータを取得する際、特定の条件でデータを取得する方法について教えてください。
  • 2つのテーブルからデータを取得する際、特定の条件を指定してデータを取得する方法について教えてください。
  • データベースのテーブルから特定の条件でデータを取得する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

あ、ごめんなさいindexではなくunique ALTER TABLE `student_upload` ADD UNIQUE (`student_number`,`upload_id`); ちなみにDISTINCTでデータが重複するはずがないので おそらく根本的なところでなにか勘違いしていると思います。 データの取り出しはなにをつかっていますか? プログラム処理をして単に処理を二回しているような気がするのですが・・・

wonder_dct
質問者

補足

yambejpさん、度々ご回答ありがとうございます。 student_numberとupload_idでユニークにしないと無理でしょうか。 できれば、ユニークキーにはしないで処理を完結させたいと思っております。 ご教示いただいた通りのSQL文をphpMyAdminから実行しております。 なので、プログラムのせいなどではないと思うのですが。 テーブルの構造を見直さないと無理なのでしょうか。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

#2さんの補足を拝見しましたが、本当にダブリデータがあるのでしたら ダブリを可能にしておく意味がないので ALTER TABLE `student_upload` ADD INDEX (`student_number`,`upload_id`); でユニークを担保すればいいのでは? (すでにダブリデータがある場合は整合性があわないのでエラーになります。 ダブリデータを削除してから実行してください) 別視点で、とりあえず動けばいいやという姑息な判断をするなら DISTINCTするだけでもなんとかなります。 select DISTINCT * from students s, student_upload up where up.upload_id=1 and up.student_number=s.student_number なおデバッグ中はともかくきちんとした運用をするときにはワイルドカード(*)は使わないでください。

wonder_dct
質問者

補足

yambejpさん、ご回答ありがとうございます。 説明が不足しており、申し訳ございません。 indexはすでに作成済みであります。 また、distinctを追加しても重複したデータで取得されてしまいます。 students にはユニークがありますので、student_upload はダブりデータOKで進めたいと考えております。 恐縮ですが、よろしくお願いいたします。

回答No.2

提示された情報、格納済みデータ、あるいはSQLに、誤りがあるように感じます。 student_uploadは重複データも格納できてしまうので、まったく同じデータを格納してしまっているのでは? その結果、upload_id=2のデータが検索されているのではなく、upload_id=1のデータが増えてしまっているように見えます。

wonder_dct
質問者

補足

chukenkenkouさん、ご回答ありがとうございます。 student_upload はstudent_number の重複登録可能としております。 SQL文をどのように変更したらよろしいでしょうか。 よろしくお願いいたします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とくに問題ないようにみえますが こんな感じになりますよね? id |student_number |name |student_number |upload_id 1 |11111 |いちろう |11111 |1 2 |22222 |じろう |22222 |1

wonder_dct
質問者

補足

yambejpさん、ご回答ありがとうございます。 ご提示いただいた通りに取得したいのですが student_upload に4件登録されていたら、4件取得されてしまいます。 ---------- id |student_number |name |student_number |upload_id 1 |11111 |いちろう |11111 |1 2 |22222 |じろう |22222 |1 1 |11111 |いちろう |11111 |1 2 |22222 |じろう |22222 |1 ---------- upload_id=2 にも関わらず、1に上書き?されて取得されてしまうのです。 よろしくご教示お願いいたします。

関連するQ&A