0

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

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

address
-- ---
id zip

language
-- ----
id lang

语言id的条目与用户的相同。它的主键基于和。对用户可以。 ididlangaddress_idnull

现在我想通过一个查询来获取所有内容。我试过了:

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);

会不会有错误?

4

2 回答 2

2
于 2013-08-23T13:32:32.973 回答
2

看到您的查询后,我意识到您需要了解LIMIT查询中的子句。

阅读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
于 2013-08-23T13:10:31.543 回答