php - JOIN 只返回一个结果

标签 php mysql pdo

我必须查询给定的表。我无法更改表结构。基本上是这样的:

user
-- ---------- ----
id address_id name

address
-- ---
id zip

language
-- ----
id lang

语言条目的id用户id相同。它的主键基于idlang用户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 子句。

阅读tutorial of 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/

相关文章:

javascript - Highchart 显示单行不带逗号的结果

mysql - 通过计算 TimeDate 记录之间的差异来查找总事件时间

php - 检查重复条目与使用 PDO errorInfo 结果

循环内的Javascript函数不适用于其他div

php - 我如何编译这个 CSS

mysql - SQL获取不同枚举值的最后一行

php - 获取php Mysql记录

php - 使用 php 检查查询行数

php - 错误 "Uncaught PDOException",即使我使用 try-catch

PHP SoapClient - 带有长整数的 SOAP 请求