0

我正在寻找一种不列出所有字段名并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 不喜欢吃 Liver Laddykinned Liver Laddykin,不管难度是不是 9。这是 CF 有意采取的保护措施,我可以理解他们为什么这样做。但是,必须有办法避免这种情况。第一个是AS在查询中使用运算符并手动列出所有字段名称。但

再次,我重复:我想避免手动列出所有字段并AS在每个字段上使用,因为这会使事情变得有点复杂,除非它可以在不列出字段的情况下完成并且可以通过冷融合应用,或者完成由 MySQL 提供。如果没有解决方案,我很好,但我知道我不是 CF 专家,当然也不是 mySQL 专家。请随时指出错误或我忽略的东西,即使它对你来说似乎微不足道。

更新 到目前为止感谢评论者!不幸的是,更改字段名称不是一种选择(尽管它肯定会起作用)。

澄清实际问题

我正在寻找的是某种方式,ColdFusion 或 MySQL 可以自动或以编程方式为我生成不同的字段名称(因此可区分),而无需手动列出每个字段(甚至试图避免使用 cfloop,我知道我让这很难),并使用AS.

我在想可能有一些我不知道的高级 SQL。

4

1 回答 1

0

对于 ColdFusion,您的列名必须是唯一的,这是没有办法的。

但是,列出字段名称并在每个字段上使用 AS 并不是那么糟糕。使用一两个快速循环,您可以动态生成 SQL(无需显式地完成所有操作),一切就绪!

于 2011-03-22T19:59:10.763 回答