2010-08-18 53 views
0

我想生成一个按字母顺序排列的名称列表,将两列名称columnA和columnB加在一起生成。如何组合和对列进行排序? MySQL,CF8,MS Access 2003

我已经试过这样:

<cfquery name="listAuthors" datasource="hhLibrary"> 
SELECT title, (a1_Fname + a2_Fname) AS ColumnA, (a1_Lname + a2_Lname) AS ColumnB 
FROM books 
WHERE ColumnB LIKE '#firstletter#%' 
ORDER BY ColumnB 
</cfquery> 

这是错误代码: 参数太少。预计1.

任何帮助极大赞赏。

oregonHoney

回答

0

更新:

select * 
from (
    SELECT title, a1_Lname as Name 
    FROM books 
    WHERE a1_Lname LIKE '#firstletter#%' 
    UNION ALL 
    SELECT title, a2_Lname as Name 
    FROM books 
    WHERE a2_Lname LIKE '#firstletter#%' 
) a 
ORDER BY Name 
+0

我一定没有足够好地描述这个问题......我想要做的是扩展列,即a1_Lname,以便它进一步列出第二列中的所有名字,然后按字母顺序排列这个完整的,更长的名单。 上面的代码会生成一个新名称列表,这些名称是通过将两个人的姓氏合并在一起而创建的。所以现在我有“Smithstevens”出现,而不是“史密斯”,然后“史蒂文斯” – 2010-08-19 15:23:08

+0

@霍尼:看到我的更新 – RedFilter 2010-08-19 15:31:34

0

喷气/ ACE SQL你不能把一凡在现场别名子句或ORDER - 你必须重复表达别名指的是。与此

SELECT title, (a1_Fname + a2_Fname) AS ColumnA, (a1_Lname + a2_Lname) AS ColumnB 
    FROM books 
    WHERE ColumnB LIKE '#firstletter#%' 
    ORDER BY ColumnB 

...:那么,更换此

SELECT title, (a1_Fname + a2_Fname) AS ColumnA, (a1_Lname + a2_Lname) AS ColumnB 
    FROM books 
    WHERE a1_Lname + a2_Lname LIKE '#firstletter#%' 
    ORDER BY a1_Lname + a2_Lname 

如果您已经安装了访问,我强烈建议你测试你的SQL交互式访问,在QBE。你很快就会发现,如果你只是在Access中试用它,情况就是这样。