我是新来的,我想帮助解决Access SQL数据合并问题。
其实我想转这个
Customer Comment
James Good
James Bad
James Good
James Ugly
进入这个:
Customer Comments
James Good, Bad, Good, Ugly
我需要在不使用VBA的情况下将同一客户的所有注释连接到一个字段,因为我正在使用PHP执行查询
由于
答案 0 :(得分:2)
嗯......我知道如何正确地连接评论,但我不确定如何拉客户。我也不确定这是否适用于Access,因为Access不支持存储过程。
DECLARE @Comments VARCHAR(8000)
SELECT @Comments = COALESCE(@Comments + ', ', '') + Comments FROM Customers
我猜你不得不为多个客户做这件事,但我能想到的就是为每个客户使用CURSOR,但我不知道Access目前是否支持游标。 / p>
DECLARE @Comments VARCHAR(8000)
SELECT @Comments = COALESCE(@Comments + ', ', '') + Comments
FROM Customers
WHERE Customer = @Customer (i.e. James, from the cursor)
老实说,我认为你在PHP中坚持这样做。
SELECT * FROM CUSTOMERS ORDER BY Customer, Comment
然后只需遍历记录集,当客户更改时,重置下一个客户的Comments变量。
答案 1 :(得分:0)
执行此操作的最佳方法是从数据库加载所有匹配的行,并在PHP中连接它们。
使用自定义函数,您可以使用Access来执行此操作,但效率很低:
Public Function CommentsForCustomer(Customer As String)
Dim sql As String
sql = "select [Comment] from Comments where Customer = '" & Customer & "'"
Dim rs As New ADODB.Recordset
rs.Open sql, CurrentProject.Connection, adOpenSnapshot
Dim text As String
text = ""
Do Until rs.EOF
If Len(text) > 0 Then
text = text & ", "
End If
text = text & rs.Fields("Comment")
rs.MoveNext
Loop
rs.Close
CommentsForCustomer = text
End Function
然后在查询中包含表达式CommentsForCustomer([Customer])
。