• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SELCTを使って違うテーブルのデータを2度使って表示させたいのですが)

2つのテーブルのデータを2度使用して表示する方法について

このQ&Aのポイント
  • 使用するテーブルの構成とデータ、表示したい結果の例を紹介します。
  • 2つのテーブルのデータを結合して表示するためのSELECT文の例を紹介します。
  • 結合条件を適切に設定することで、表示したい結果を得ることができます。

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

  • ベストアンサー
  • vivas
  • ベストアンサー率100% (1/1)
回答No.4

誤字がかなり多いので一旦整理しますね ---テーブル情報--- ・FoodList NO Food 1 りんご 2 みかん 3 ぶどう ・MyList NO first second 1 2 3 2 1 2 3 2 1 --------------- 正しくは以下の通りです。 -------------------------------- SELECT MyList.No, FoodList.Food As firstFood, FoodList_2.Food As secondFood FROM MyList INNER JOIN FoodList ON MyList.first = FoodList.No INNER JOIN FoodList As FoodList_2 ON MyList.second = FoodList_2.No -------------------------------- スレ主の2件目クエリーの結合順序が逆になっているのが原因ですね。

epiko
質問者

お礼

回答いただきありがとうございます。 問題解決することができました。 ありがとうございます。

その他の回答 (3)

回答No.3

こんにちは。下手な説明になりますが、回答させていただきます。 なぜ、 --------------------------------------------------------- SELECTMyLike.NO AS Expr1,FoodList.food,MyLike.Second FROMFoodList INNER JOIN MyLike ON FoodList.NO = MyLike.first --------------------------------------------------------- ↑これで、結果が 1みかん3 2りんご2 3みかん1 になってしまうかと言うと、SELECTで最後に「Second」を入れている からです。これでは、JOINしても表示は数字になってしまいます。 正しく表示したいのであれば、 --------------------------------------------------------- SELECT MyList.NO AS Expr1,FoodList.food,FoodList.food AS FOOD_NAME FROM FoodList INNER JOIN MyList ON FoodList.NO = MyList.first OR FoodList.NO = MyList.second --------------------------------------------------------- ↑のように、同じ行のSELECTをしても「FOOD_NAME」のように別名をつけていれば 問題ありません。 また、ANDで結合条件をまとめるのではなく、ORにすれば表示されなくなることも なくなるはずです。 ※冒頭SQL文に出てくる、テーブル名「MyLike」とは「MyList」のミスだと解釈し て説明しています。 これでもし、うまく実行出来なかったらかなりお恥ずかしいです;すみません。 結果のお返事、お待ちしております。

epiko
質問者

お礼

丁寧に解説をいただきありがとう ございます。 今回なぜできなかったのかよく理解できました。 ありがとうございます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

#1ですが、やはり訂正あり。 2行目のinnerJoinは、firstでは無くてsecondでした。 SELECT MyLike.NO AS Expr1, FL1.food, FL2.food FROM MyLike INNER JOIN FoodList FL1 ON MyLike.first = FL1.NO INNER JOIN FoodList FL2 ON MyLike.second = FL2.NO

epiko
質問者

お礼

回答ありがとうございます。 ログインできる環境ではなく今朝みさせていただき お礼がおくれてしまいました。 おかげでできることができました。 ありがとうございます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

2回登場する[FoodList]にエイリアスを付けて、「別なテーブル」として識別させる。 SELECT MyLike.NO AS Expr1, FL1.food, FL2.food FROM MyLike INNER JOIN FoodList FL1 ON MyLike.first = FL1.NO INNER JOIN FoodList FL2 ON MyLike.first = FL2.NO 試験してないので、ちょっと怪しいかも。

関連するQ&A