我必须查询给定的表。我无法更改表结构。基本上是这样的:
user
-- ---------- ----
id address_id name
address
-- ---
id zip
language
-- ----
id lang
语言条目的id
与用户的id
相同。它的主键基于id
和lang
。 用户 的address_id
可以是null
。
现在我想通过一个查询获取所有内容。我试过:
SELECT
p.name,
l.lang,
a.zip
FROM user p
JOIN language l ON p.id = l.id
LEFT JOIN address a ON p.address_id = a.id
WHERE p.id = :id
LIMIT 1
除一件事外,它实际上有效:它只返回连接到用户的第一种语言。如何检索所有语言?
编辑
我正在使用 PHP PDO 检索结果:
$value = $stmt->fetch(PDO::FETCH_ASSOC);
会不会出错?
最佳答案
在看到您的查询后,我意识到您需要了解查询中的 LIMIT
子句。
您在查询中使用了 LIMIT 1
,这就是它只检索一行的原因。
删除该限制子句以从查询中获取完整数据。
已编辑:
或者代替您的查询尝试以下查询:
SELECT
p.name,
l.lang,
a.zip
FROM user p, language l, address a
WHERE p.id = l.id AND p.address_id = a.id AND p.id = :id
关于php - JOIN 只返回一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403541/