PDO查询:计算相关值和重复值,然后计算内连接

时间:2017-10-02 20:28:14

标签: php sql

我使用PHP和PDO。 所以我有2个表,比如,

表1

| id | name | age |
| 1  | John |  25 |
| 2  | Tom  |  32 |
| 3  | James|  45 |

表2

| id |  Comment  | Link |
| 1  | some text |  3   |
| 2  | some text |  3   |
| 3  | some text |  1   |

因此,链接列号代表table1中的id。例如,表2中的Link = 3s表示表1中的James。我需要一个查询,它带来所有table1的数据以及来自table2的相关Link列的重复值。

例如,查询应该给我(让我们选择詹姆斯),

| id | name  | age | Value |
| 3  | James | 45  |   2   |

value = 2,因为链接列中有两个与James相关的3

我尝试了一些事情,但却遇到了很多错误。

1 个答案:

答案 0 :(得分:2)

我认为你只需要GROUP BY

SELECT a.id,
       a.name,
       a.age,
       count(*) as value
FROM table1 a
JOIN table2 b ON a.id = b.link
GROUP BY a.id, a.name, a.age

如果您真的只想要一行,请添加WHERE

SELECT a.id,
       a.name,
       a.age,
       count(*) as value
FROM table1 a
JOIN table2 b ON a.id = b.link
WHERE a.name = 'James'
GROUP BY a.id, a.name, a.age

或使用子查询

SELECT a.id,
       a.name,
       a.age,
       (SELECT count(*) FROM table2 b WHERE a.id = b.link) as value
FROM table1 a
WHERE a.name = 'James'