在 php/mysql 中左连接带有数组的列

use*_*642 1 php mysql arrays join

我有几个表 1 联系人和多个数据。

联系人有一个 ID 字段和一个姓名字段;数据有一个名为“联系人”的字段(以及其他字段)。

例如联系人

ID - Name
1 - James
2 - Mark
3 - Doug
Run Code Online (Sandbox Code Playgroud)

例如数据

ID - Contacts - Data
1 - 1,3 - more data
2 - 2 - more data
3 - 2,3,1 - more data
Run Code Online (Sandbox Code Playgroud)

显然,逗号分隔的号码链接到联系人表中的几个人。如何将逗号分隔的列表转换为人员姓名?标准左连接不起作用。

有没有办法可以在原始查询中执行此操作,或者我是否必须在原始 while 循环内的 foreach 内添加一段时间?例如(以下内容也不起作用,但据我所知):

//original query while {
        $contacts_array = array(implode(",",$db['Contacts'])); 
        foreach ($contacts_array as $contacts_id) 
        { 
            $contacts_query = "SELECT Name FROM data_contacts WHERE ID='$contacts_id'";
            $contacts_result = mysql_query ($contacts_query);
            $contactslist="";
            while($contacts=mysql_fetch_array($contacts_result)){
                $contactslist .= $contacts['Name'].", ";
            } 
        } 
echo $contactslist;
}
Run Code Online (Sandbox Code Playgroud)

Qua*_*cal 5

我总是存储与各个行的多对多关系,而不是逗号分隔的值:

ID - Contacts
1 - 1
1 - 3
2 - 2
3 - 2
3 - 3
3 - 1
Run Code Online (Sandbox Code Playgroud)

  • 您应该将您的陈述更改为:您必须始终...否则我完全同意。 (3认同)