【发布时间】: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 的朋友。