2010-08-18 7 views
0

Je souhaite produire une liste alphabétique des noms produits en additionnant deux colonnes de noms, columnA et columnB.Comment combiner et trier des colonnes? MySQL, CF8, MS Access 2003

J'ai essayé:

<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> 

c'est le code d'erreur: Trop peu de paramètres. Prévu 1.

toute aide grandement appréciée.

oregonHoney

Répondre

0

Mise à jour:

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

Je ne dois pas avoir suffisamment décrit le problème ... ce que je veux faire est d'étendre la colonne, c'est a1_Lname, de sorte qu'il énumère tous les noms dans la deuxième colonne, ALORS alphabétise cette complète, plus liste des noms. Le code ci-dessus donne une liste de NOUVEAUX noms qui ont été créés en fusionnant les noms de famille de deux personnes. Alors maintenant j'ai "Smithstevens" qui apparaît au lieu de "smith" puis "Stevens" –

+0

@Honey: voir ma mise à jour – RedFilter

0

Dans Jet/ACE SQL vous ne pouvez pas placer une clause WHERE ou ORDER BY sur un alias de nom de domaine - vous devez répéter l'expression l'alias fait référence à. Ainsi, remplacer:

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

... avec ceci:

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 

Si vous avez accès installé, je vous encourage fortement à tester SQL dans Access interactif, dans la QBE. Vous auriez rapidement découvert que c'est le cas si vous l'aviez simplement essayé dans Access.