- ベストアンサー
2つのテーブルのデータを2度使用して表示する方法について
- 使用するテーブルの構成とデータ、表示したい結果の例を紹介します。
- 2つのテーブルのデータを結合して表示するためのSELECT文の例を紹介します。
- 結合条件を適切に設定することで、表示したい結果を得ることができます。
- みんなの回答 (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件目クエリーの結合順序が逆になっているのが原因ですね。
その他の回答 (3)
- m_yamaneko
- ベストアンサー率0% (0/1)
こんにちは。下手な説明になりますが、回答させていただきます。 なぜ、 --------------------------------------------------------- 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」のミスだと解釈し て説明しています。 これでもし、うまく実行出来なかったらかなりお恥ずかしいです;すみません。 結果のお返事、お待ちしております。
お礼
丁寧に解説をいただきありがとう ございます。 今回なぜできなかったのかよく理解できました。 ありがとうございます。
- bin-chan
- ベストアンサー率33% (1403/4213)
#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
お礼
回答ありがとうございます。 ログインできる環境ではなく今朝みさせていただき お礼がおくれてしまいました。 おかげでできることができました。 ありがとうございます。
- bin-chan
- ベストアンサー率33% (1403/4213)
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 試験してないので、ちょっと怪しいかも。
お礼
回答いただきありがとうございます。 問題解決することができました。 ありがとうございます。