我在同一个mysql数据库中有3个表
email
id | emailAddresses
--------+--------------
91 | Cras@Cumsociisnatoque.net
92 | ante.dictum.mi@sollicitudinadipiscingligula.co.uk
93 | Nunc.sed@pretiumet.ca
94 | Nunc.mauris@lacusQuisque.org"
95 | ccumsan.interdum@tellus.ca
96 | isl@Sedpharetrafelis.com
97 | u.accumsan.sed@Nuncsollicitudin.net
98 | at@eleifendvitaeerat.co.uk
99 | pede.ac.urna@pharetraQuisque.co.uk
100 | ccumsan.laoreet.ipsum@arcueu.co.uk
groups
id | groupName
--------+----------
10 | Group1
11 | Group2
12 | Group3
13 | Group4
emailGroupsMatches
id | emailGroup_id | email_id
--------+-------------------|------------
400 | 10 | 91
411 | 11 | 91
412 | 12 | 93
413 | 13 | 94
414 | 10 | 95
415 | 10 | 96
我正在尝试提取组名,然后检查与该组关联的所有电子邮件并将其显示在组标题下。
Group1:
Cras@Cumsociisnatoque.net
ccumsan.interdum@tellus.ca
isl@Sedpharetrafelis.com
Group2:
Cras@Cumsociisnatoque.net
Group3:
Nunc.sed@pretiumet.ca
Group4:
Nunc.mauris@lacusQuisque.org
我认为我可能对此考虑过多,或者可能是我不熟悉的事情。我曾尝试加入表,但我可能做错了。任何方向的帮助将不胜感激。
谢谢
更新__________
我尝试获取两个数组,然后尝试加入它们。它接近了,但我一直遇到问题。
$emailArray1[] = '';
$emailArray2[] = '';
$stmt1 = $this->db->query("SELECT emailGroupsMatches.emailGroup_id, emailGroupsMatches.email_id, emailGroups.groupName FROM emailGroups,emailGroupsMatches WHERE emailGroupsMatches.emailGroup_id = emailGroups.id");
while ($row1 = $stmt1->fetch()) {
$emailArray1[] = $row1;
$emailGroup_id[] = $row1['emailGroup_id'];
$email_id[] = $row1['email_id'];
$groupName[] = $row1['groupName'];
$data1[] = array(
"emailGroup_id" => $emailGroup_id,
"email_id" => $email_id,
"groupName" => $groupName
);
echo '<pre>';
print_r($data1);
}
$stmt2 = $this->db->query("SELECT * FROM email,emailGroupsMatches WHERE emailGroupsMatches.email_id = email.id");
while ($row2 = $stmt2->fetch()) {
$emailArray2[] = $row2;
$emailGroup_id2[] = $row2['emailGroup_id'];
$emailAddresses[] = $row2['emailAddresses'];
$data2[] = array(
"emailGroup_id" => $emailGroup_id2,
"emailAddresses" => $emailAddresses
);
//echo '<pre>';
//print_r($data2);
}
//$c = array_combine($emailArray1, $emailArray2);
//print_r($c);
$result = array();
foreach ($data1 as $value) {
// do not handle elements without pageclass
if (!array_key_exists('emailGroup_id', $value) || !$value['emailGroup_id']) {
continue;
}
$result[$value['emailGroup_id']] = $value;
}
foreach ($data2 as $value) {
if (
// do not handle elements without pageclass
!array_key_exists('emailGroup_id', $value) || !$value['emailGroup_id'] ||
// do not handle elements that do not exist in array 1
!array_key_exists($value['emailGroup_id'], $result)
) {
continue;
}
// merge values of this pageclass
$result[$value['emailGroup_id']] = array_merge($result[$value['emailGroup_id']], $value);
}
echo '<pre>';
print_r($result);
返回
Array
( [0] =>数组 ( [emailGroup_id] =>数组 ( [0] => 11 )
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
)
)
[1] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
)
)
[2] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
[2] => 12
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
[2] => luctus.et.ultrices@Vivamus.net
)
)
[3] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
[2] => 12
[3] => 12
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
[2] => luctus.et.ultrices@Vivamus.net
[3] => quis@fringillaporttitor.co.uk
)
)
[4] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
[2] => 12
[3] => 12
[4] => 10
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
[2] => luctus.et.ultrices@Vivamus.net
[3] => quis@fringillaporttitor.co.uk
[4] => arcu.Sed.eu@accumsan.org
)
)
[5] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
[2] => 12
[3] => 12
[4] => 10
[5] => 10
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
[2] => luctus.et.ultrices@Vivamus.net
[3] => quis@fringillaporttitor.co.uk
[4] => arcu.Sed.eu@accumsan.org
[5] => Ut@luctuslobortisClass.com
)
)
[6] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
[2] => 12
[3] => 12
[4] => 10
[5] => 10
[6] => 13
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
[2] => luctus.et.ultrices@Vivamus.net
[3] => quis@fringillaporttitor.co.uk
[4] => arcu.Sed.eu@accumsan.org
[5] => Ut@luctuslobortisClass.com
[6] => aliquet@ProindolorNulla.co.uk
)
)
[7] => Array
(
[emailGroup_id] => Array
(
[0] => 11
[1] => 11
[2] => 12
[3] => 12
[4] => 10
[5] => 10
[6] => 13
[7] => 13
)
[emailAddresses] => Array
(
[0] => xdbxxvfshddghd@llsfg.com
[1] => cyeyeyddbd@gmadbdbxbil.com
[2] => luctus.et.ultrices@Vivamus.net
[3] => quis@fringillaporttitor.co.uk
[4] => arcu.Sed.eu@accumsan.org
[5] => Ut@luctuslobortisClass.com
[6] => aliquet@ProindolorNulla.co.uk
[7] => hendrerit.a.arcu@sedlibero.com
)
)
)
答案 0 :(得分:1)
以下查询将返回groupName
并以逗号分隔的关联emailAddresses
列表。因此,您可以显示组名并显示关联的电子邮件,只需循环emailAddresses列表即可。希望这会对您有所帮助!
SELECT groups.groupName as groupName, GROUP_CONCAT(email.emailAddresses) as emails
FROM email
INNER JOIN emailGroupsMatchesON emailGroupsMatches.email_id = email.id
INNER JOIN groups ON emailGroupsMatches.emailGroup_id = groups.id
GROUP BY groups.id