Reputation: 97
I am working on code that would check for any telephone number that appears more than once in table of employees. In this scenario different persons may have the same telephone number and I wish to flag them.
<table style="height: 234px;" width="735">
<tbody>
<tr>
<td style="width: 114px;"><span style="text-decoration: underline;"><strong>First name</strong></span></td>
<td style="width: 114px;"><span style="text-decoration: underline;"><strong>Last Name</strong></span></td>
<td style="width: 116px;"><span style="text-decoration: underline;"><strong>Main Phone</strong></span></td>
<td style="width: 117px;"><span style="text-decoration: underline;"><strong>Work Phone</strong></span></td>
<td style="width: 117px;"><span style="text-decoration: underline;"><strong>Mobile 1</strong></span></td>
<td style="width: 117px;"><span style="text-decoration: underline;"><strong>Mobile 2</strong></span></td>
</tr>
<tr>
<td style="width: 114px;">Jon</td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;">77777777</td>
<td style="width: 117px;">50505050</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
</tr>
<tr>
<td style="width: 114px;">J </td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
</tr>
<tr>
<td style="width: 114px;">John </td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;">50505050</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
</tr>
<tr>
<td style="width: 114px;">J Smith</td>
<td style="width: 114px;"> </td>
<td style="width: 116px;"> </td>
<td style="width: 117px;">77777777</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;">50505050</td>
</tr>
<tr>
<td style="width: 114px;">Jane</td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;">77777777</td>
</tr>
<tr>
<td style="width: 114px;">J</td>
<td style="width: 114px;">Doe</td>
<td style="width: 116px;">65656565</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;">33333333</td>
</tr>
<tr>
<td style="width: 114px;">Jessica</td>
<td style="width: 114px;">Doe</td>
<td style="width: 116px;"> </td>
<td style="width: 117px;">33333333</td>
<td style="width: 117px;">65656565</td>
<td style="width: 117px;"> </td>
</tr>
</tbody>
</table>
I have attempted to search for any number occurring twice using the below code without success and seek your advice.
Select firstname, lastname, mainPhone, count(mainPhone), workPhone,count(businessPhone), mobile1Phone, count(mobilePhone) , mobile2Phone, count(mobile2Phone)
from employeeTable
group by mainPhone, businessPhone, mobile1Phone, mobile2Phone
having
(count(mainPhone) > 1) or (count(businessPhone) > 1) or (count(mobile2Phone) > 1) or (count(mobile2Phone) > 1);
Upvotes: 0
Views: 34
Reputation: 26
You could try something like that.
SELECT
phone,
GROUP_CONCAT(`uniqueKey`) AS `uniqueKeys`,
COUNT(*)
FROM
(
SELECT
id AS `uniqueKey`,
'mainPhone' AS source,
mainPhone AS `phone`
FROM
employeeTable
UNION
SELECT
id AS `uniqueKey`,
'businessPhone' AS source,
businessPhone AS `phone`
FROM
employeeTable
UNION
SELECT
id AS `uniqueKey`,
'mobile1Phone' AS source,
mobile1Phone AS `phone`
FROM
employeeTable
UNION
SELECT
id AS `uniqueKey`,
'mobile2Phone' AS source,
mobile2Phone AS `phone`
FROM
employeeTable
) AS subquery1
GROUP BY phone
At first with the different statements connected by UNION
you create something like a transpondet view. This can be grouped and counted. I assumed that there is some kind of unique or primary key like an id or login or similar.
Upvotes: 1