我想查询4号人的朋友的姓名,所以'otherPerson_id'中的数字,但我只尝试查询'person_id'中的ID或名称。我怎么能要求查询关于第四人的朋友的信息,而不是关于第四人的信息呢?如何查询JOIN表的第二列?
这里是我的尝试:
$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/>";
}
表:(所以当我寻找的人的朋友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或pf.person_id = 4)。您可以尝试替换连续查询。 – NavaStha
罗保罗是对的。这取决于表结构。例如,'people_friends'表中的'name'是否可用? – Drumbeg