Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将不同SQL access记录的值放入1_Php_Sql_Database_Ms Access_Ms Access 2007 - Fatal编程技术网

Php 将不同SQL access记录的值放入1

Php 将不同SQL access记录的值放入1,php,sql,database,ms-access,ms-access-2007,Php,Sql,Database,Ms Access,Ms Access 2007,我是新来的,我想得到一些帮助来解决Access SQL数据合并问题 实际上我想把这个 Customer Comment James Good James Bad James Good James Ugly 为此: Customer Comments James Good, Bad, Good, Ugly 我需要将同一客户的所有注释连接到一个没有VBA的字段中,因为我正在使用PHP执行查询 谢谢那么。。。我知道如

我是新来的,我想得到一些帮助来解决Access SQL数据合并问题

实际上我想把这个

Customer    Comment 
James        Good
James        Bad
James        Good
James        Ugly
为此:

Customer    Comments
James       Good, Bad, Good, Ugly
我需要将同一客户的所有注释连接到一个没有VBA的字段中,因为我正在使用PHP执行查询


谢谢

那么。。。我知道如何正确连接评论,但我不确定如何吸引客户。我也不确定这是否能在Access中工作,因为Access不支持存储过程

DECLARE @Comments VARCHAR(8000)  
SELECT @Comments = COALESCE(@Comments + ', ', '') + Comments FROM Customers
我猜您必须为多个客户执行此操作,但我所能想到的就是为每个客户使用游标,但我不知道Access目前是否支持游标

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变量。

最好的方法是从数据库加载所有匹配的行,并在PHP中连接它们

使用自定义函数,您可以获得执行此操作的权限,但效率很低:

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

有一种相当糟糕的方法。您的表有多大?在MS Access SQL中没有声明或合并。@HansUp-这就是我担心的。。。可能将Access表移植到Microsoft免费版SQL?好的。我在想,在将数据发送到PHP之前,任何数据库都可以进行连接。如果他因为任何原因被锁定,你答案的最后一部分对我来说很好。。。但我实际上并不使用PHP.:-)我是用PHP做的:)Thnak她用PHP从Access检索数据。Access本身(MSACCESS.EXE)未运行,这意味着他的查询无法使用用户定义的函数。