0

我目前正在处理一个查询,该查询将包含一个表中的所有行,但只有另一个表中的有限信息。

我试过使用这个查询:

SELECT `t`.`uid`, `t`.`cid`, `t`.`id` FROM `tracking` as `t`
JOIN (SELECT DISTINCT(`p`.`id`, `p`.`firstname`, `p`.`lastname`, `p`.`company`) FROM `publishers` as `p`) as `p`
ON `p`.id = `t`.uid

但是,我收到主题标题中的错误。

谁能看到我在这里做错了什么?

编辑:

跟踪结构: id int(11) primary ai、cid int(11)、uid int(11)。

发布者的结构: id int(11) primary ai、firstname varcher(60)、lastname varchar(60)、company varchar(100)。

示例: 出版商 id 1,名字 NIKOLAJ,姓 JEPSEN,公司 APECHO id 6,名字 ROBERT,姓 SCOTT,公司 FLAPJACK LTD

跟踪 id 1、cid 1、uid 1;id 2,cid 1,uid 6;id 3,cid 3,uid 1

4

2 回答 2

2

肯定没有两个发布者可以共享相同的 id、名字、姓氏和公司!!!

SELECT t.uid
     , t.cid
     , t.id 
  FROM tracking t
  JOIN publishers p
    ON p.id = t.uid;
于 2013-01-29T16:29:35.120 回答
0

区别(p. id, p. firstname, p. lastname, p. company

是问题所在。去掉括号:

SELECT `t`.`uid`, `t`.`cid`, `t`.`id` FROM `tracking` as `t`
JOIN (SELECT DISTINCT `p`.`id`, `p`.`firstname`, `p`.`lastname`, `p`.`company` FROM `publishers` as `p`) as `p`
ON `p`.id = `t`.uid

这应该允许查询工作......但是,如果您必须为此使用 distinct,您的数据结构或查询可能还有其他问题。

于 2013-01-29T16:39:22.257 回答