2016-07-27 3 views
-2

表1はどのようにテーブルの列をループを超えると、列名に基づいての、私は他のテーブルの列名に基づいて値を取得したい

| Id | ProductName | Is_JAipur | Is_Rajasthan | Is_Nagpur | 
|----|-------------|-----------|--------------|-----------| 
| 1 |   101 |   0 |   1 |   0 | 
| 2 |   102 |   0 |   0 |   1 | 

表2

| Id |  Name | 
|----|-----------| 
| 1 | Jaipur | 
| 2 | Rajasthan | 
| 3 | Nagpur | 

表3

| Id | Product | City | 
|----|---------|------| 
| 1 |  101 | 2 | 
| 2 |  102 | 3 | 

私はtable 1列をループしながら、table 2からIdを取得するクエリを書きたいです。 table 3に挿入します。私はこの都市を将来的に拡大する可能性があるので、この動向を維持したい。

+0

あなたの予想出力は何ですか? – 1000111

+1

'(Id、ProductName、cityID')のように、' Table1'のテーブル構造をより良く変更してください。 'cityID'は' Table2.Id'を参照し、1対多の関係でなければ 'Table3'は必要ありません。 – 1000111

+1

"私は質問を書いてみたいです" - 何があなたを止めていますか? –

答えて

0

私はすでにあなたのテーブルの設計に必要な変更を言及しました。あなたがこれを採用しない限り、将来大きな問題に直面するでしょう。

それにもかかわらず、私はあなたの現在の要件にあなたに解決策を与えている:

INSERT INTO your_table_3(Product,City) 

SELECT 
t.ProductName, 
your_table_2.Id 
FROM 
(
    SELECT 
    ProductName, 
    CASE WHEN is_JAipur = 1 THEN 'Jaipur' 
      WHEN Is_Rajasthan = 1 THEN 'Rajasthan' 
      WHEN Is_Nagpur = 1 THEN 'Nagpur' END AS cityName 
    FROM your_table_1 
) AS t 
INNER JOIN your_table_2 ON t.cityName = your_table_2.`Name` 

WORKING DEMO

+0

ありがとう、しかし、私はすでにこのオプションを検討しているので、都市名が増加する可能性があるので、スクリプトの列名の値をハードコードしたくありません。私はテーブル1の列(都市名を含む)を反復したいと思います。テーブル2からIDを見つけて、テーブル3にIDと製品名を挿入します。 –

+0

あなたのソリューションはうまく動作しますが、 ) –

+1

申し訳ありません。私はこれを悪化させることはできません。 – 1000111

関連する問題