mysql/coldfusion cfquery:Select t1。*、t2。*でデータオーバーワイトを避けるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/5396469

  •  28-10-2019
  •  | 
  •  

質問

すべてのフィールド名をリストアップして使用せずにこれを行う方法を探しています AS それぞれに。たぶん、これはmysqlの質問です。明確にするために、私は例を提供します:

table1: users
+-id-+------name------+-preferred_moose_id-+-preferred_preparation_id-+
| 20 | Chester Chore  |          1         |             3            |
| 72 | George Garnish |          2         |             2            |
| 88 | Liver Laddykin |          2         |             3            |
+----+----------------+--------------------+--------------------------+

table2: moose_types
+-id-+------name------+-------size------+---------------diet--------------+
| 1  | Canadian Moose | Pretty Big      | Corn and snow                   |
| 2  | Red Moose      | Not as big      | Dolphins                        |
| 3  | Horses         | Size of a horse | Oats, cheese, okra, and farmers |
+----+----------------+-----------------+---------------------------------+

table3: preparation_types
+-id-+-------name-------+-difficulty-+
| 1  | Boiled           |     3      |
| 2  | Stuffed          |     5      |
| 3  | Butterflied      |     9      |
+----+------------------+------------+

このようなSQLがある場合:

SELECT users.*, moose_types.*, preparation_types.*
  FROM users
 INNER JOIN moose_types ON moose_types.id = users.preferred_moose_id
 INNER JOIN preparation_types ON preparation_types.id = users.preferred_preparation_id
 WHERE users.id = 88

そして、私はクエリを捨てます、私はこのようなものになります:

+---diet---+-difficulty-+-id-+-id-+-id-+------name------+------name------+------name------+-preferred_moose_id-+-preferred_preparation_id-+-------size------+
| Dolphins |     9      | 88 | 88 | 88 | Liver Laddykin | Liver Laddykin | Liver Laddykin |         2          |             3            | Not as big      |
+----------+------------+----+----+----+----------------+----------------+----------------+--------------------+--------------------------+-----------------+

上書き/複製されているデータに注意してください。 Liver Laddykinは、9の難しさであろうと、Liver Laddykinined Liver Laddykinを食べるのが好きではありません。これはCFによって意図的に行われるセーフガードであり、なぜ彼らがこのようにそれをしたのかを理解することができます。ただし、これを回避する方法が必要です。最初は使用します AS クエリのオペレーターとすべてのフィールド名を手動でリストします。しかし

繰り返しますが、私は反復します:私はすべてのフィールドを手動でリストして使用しないようにしたいです AS それぞれで、これはフィールドをリストせずに行うことができ、ColdFusionによって、またはMySQLによって行われる場合を除き、それを少し複雑にするでしょう。解決策がなければ、私はそれで元気ですが、私はCFの専門家ではないことを知っています 確かにそうではありません MySQLの専門家。あなたに些細なように見えるとしても、エラーや私が見落としているものを気軽に指摘してください。

アップデートこれまでのところコメンターに感謝します!残念ながら、フィールド名を変更することはオプションではありません(間違いなく機能しますが)。

実際の質問の明確化

私が探しているのは、ColdFusionまたはMySQLのいずれかが、各フィールドを手動でリストすることなく、自動的またはプログラム的に異なるフィールド名(および微分可能)を生成できる方法です(CFLOOPの使用を避けようとしても、私は知っています私はこれを激しくしています)、そしてそれを使用して宣言します AS.

私が知らない高度なSQLがそこにあるかもしれないと思っています。

役に立ちましたか?

解決

ColdFusionの場合、列名は一意である必要があります。それを回避する方法はありません。

ただし、フィールド名をリストし、それぞれに使用することはそれほど悪くありません。クイックループを1つまたは2つすると、SQLを動的に生成できます(明示的に最後のものを実行する必要はありません)、すべてセットされます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top