【问题标题】:How to query the second column of a JOIN table?如何查询 JOIN 表的第二列?
【发布时间】:2013-12-08 11:57:44
【问题描述】:

我想查询第4个人的朋友的名字,所以'otherPerson_id'中的数字,但我的尝试只查询'person_id'中的id或名字。怎么能查询到4号好友的信息,而不是4号本身的信息呢?

这是我的尝试:

$q = "SELECT DISTINCT p.idperson, p.name FROM person p INNER JOIN people_friends pf ON p.idperson = pf.person_id AND p.idperson = 4";
        $res = $connexion->query($q);
        $res->setFetchMode(PDO::FETCH_COLUMN);
        while($record = $res->fetch()) {
            echo $record[name];
            echo "<br/>";
        }

table : (所以当我找人 n°4 的朋友时,我希望它返回 1 和 7)

编辑:

CREATE TABLE people_friends
(
  person_id integer NOT NULL,
  otherperson_id integer NOT NULL,
  CONSTRAINT people_friends_pkey PRIMARY KEY (person_id, otherperson_id),
  CONSTRAINT people_friends_person_id_fkey FOREIGN KEY (person_id)
      REFERENCES person (idperson) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT people_friends_person_id_fkey1 FOREIGN KEY (person_id)
      REFERENCES person (idperson) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)



CREATE TABLE person
(
  idperson integer NOT NULL,
  name character varying(50),
  map bytea,
  CONSTRAINT person_pkey PRIMARY KEY (idperson)
)

谢谢

【问题讨论】:

  • 我认为我们需要 person 和 people_friends 表的模式。
  • .......ON p.idperson = pf.person_id AND (p.idperson = 4 OR pf.person_id = 4)。您可以尝试替换连续查询。
  • 保罗·罗是对的。这取决于表结构。例如,name 是否在 people_friends 表中可用?
  • @PaulLo 我编辑了我的帖子,NavaStha 我只想要 n°4 的朋友。

标签: php sql join


【解决方案1】:

试试这个查询。

SELECT DISTINCT

pFriend.idperson, pFriend.name

FROM people_friends pf 

INNER JOIN person pFriend on pf.otherperson_id = pFriend.idperson

WHERE

pf.person_id = 4

【讨论】:

  • 我试过这个,但它不起作用(它不返回任何东西,好像有错误,页面是空白的)。如果有帮助,我编辑了我的帖子。
  • 在 MySQL 查询浏览器中尝试一下,看看它在那里返回什么或者你在那里遇到什么错误。我的查询应该给你你想要的,这是你需要的一个非常简单的查询。
  • @peterPetrov 你说得对,我忘了分号 :) 很好用,非常感谢
【解决方案2】:

您只需在检查 pf 表的位置添加一个 WHERE 子句。

SELECT DISTINCT p.idperson
               ,p.name 
FROM person p 
  INNER JOIN people_friends pf 
    ON p.idperson = pf.person_id 
WHERE pf.otherperson_id = 4

【讨论】:

  • 我认为这是不对的。他期望以 4 的 person_id 返回 1 和 7 的 otherperson_id
猜你喜欢
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多