加入不正常

时间:2016-07-18 15:25:22

标签: php sql join

我是SQL新手并尝试使用join获取数据。不知道我做错了什么。我有两张桌子。

record

recordID|activityName|userID 1 | sale | 5 2 | call | 5 3 | contact | 5

activity

activityID|activityData|userID 1 | 50 | 5 2 | 70 | 5 3 | xyz | 5

结果应为

recordID|activityName|activityData|userID 1 | sale | 50 | 5 2 | call | 70 | 5 3 | contact | xyz | 5

但它返回

recordID|activityName|activityData|userID 1 | sale | 50 | 5 2 | call | 70 | 5 3 | contact | xyz | 5 1 | sale | 50 | 5 2 | call | 70 | 5 3 | contact | xyz | 5 1 | sale | 50 | 5 2 | call | 70 | 5 3 | contact | xyz | 5

SELECT * FROM tblrecord tr, tblactivity ta WHERE tr.userID = ta.userID AND tr.userID = '5'

为什么重复结果。

PS。 userID是唯一的公共字段,activityID和recordID可以不同。

2 个答案:

答案 0 :(得分:3)

首先,遵循一个简单的规则:从不FROM子句中使用逗号。 始终使用明确的JOIN语法。

其次,您似乎希望加入recordIdactivityId

SELECT *
FROM tblrecord tr JOIN
     tblactivity ta 
     ON  tr.userID = ta.userID AND
         tr.recordId = ta.activityId
WHERE tr.userID = 5;

另外,如果值实际上是一个数字,请不要使用单引号。

答案 1 :(得分:1)

添加

  

GROUP BY userID,activityID

查询。