两个问题:
(1)您是否尝试过直接从MySQL命令行运行查询?如果是这样,它会给你你想要的结果?
(2)你能展示更多的代码吗?也许问题在代码中的其他位置。
一开始尝试这一JOIN明确查询:
SELECT p.id, p.name
FROM p
JOIN ps
ON p.id = ps.p_id
JOIN s
ON ps.s_id = s.id
WHERE s.id = 1;
的样本数据:
CREATE TABLE p
(
id int auto_increment primary key,
name varchar(20)
)ENGINE=InnoDB;
INSERT INTO p
(name)
VALUES
('Bob'),
('Jack'),
('John');
CREATE TABLE s
(
id int auto_increment primary key,
name varchar(30)
)ENGINE=InnoDB;
INSERT INTO s
(name)
VALUES
('blablabla'),
('Foo'),
('Foobar');
CREATE TABLE ps
(
id int auto_increment primary key,
p_id int,
s_id int,
FOREIGN KEY (p_id) REFERENCES p(id),
FOREIGN KEY (s_id) REFERENCES s(id)
)ENGINE=InnoDB;
INSERT INTO ps
(p_id,s_id)
VALUES
(1,1),
(1,2),
(2,1),
(2,2),
(3,2);
SQLFiddle demo
是什么'mysqli_error()'说的错误是什么? – Barmar
查询中的第三个表在哪里?它只使用2个表格。 – Barmar
怀疑: - 为什么在查询中传递所有值时使用查询做准备? – heretolearn