Adodb:Postgresql从两个表中选择但返回一组结果

发布于 2024-08-23 00:06:30 字数 480 浏览 9 评论 0原文

我是 SQL 新手,有两个保存数据的表(我使用的是 Adodb)。它们都有将它们连接在一起的键,因此我想从第一个表中选择一个名称(如果该名称在第二个表中具有父 ID)。我正在使用:

$db->GetCol("SELECT x_ast.name FROM x_ast, x_ast_tree WHERE x_ast_tree.parent='$parent_id'");

这会返回一个包含正确数据的数组,但它在其中出现了两次。 (我假设是因为我要求它来自两个表):

Array
(
    [0] => Trash
    [1] => Users
    [2] => admin
    [3] => Trash
    [4] => Users
    [5] => admin
)

如何根据另一个表中的数据从一个表中选择一个字段,但只返回一组结果?我做错了什么?

I am new to SQL, and have two tables that hold data(I am using Adodb). They both have keys that connect them together, so I wanted to select a name from the first table if that has a parent id in the second table. I am using:

$db->GetCol("SELECT x_ast.name FROM x_ast, x_ast_tree WHERE x_ast_tree.parent='$parent_id'");

This returns an array with the correct data, but it is in there twice. (I assume because I asked it to come from two tables):

Array
(
    [0] => Trash
    [1] => Users
    [2] => admin
    [3] => Trash
    [4] => Users
    [5] => admin
)

How can I select a field from one table based on the data in another table, but only return one set of results? What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘和柠 2024-08-30 00:06:30

问题是您没有设置连接两个表的标准,因此它正在执行交叉连接。

SELECT x_ast.name
FROM x_ast
INNER JOIN x_ast_tree
  ON x_ast.somefield=x_ast_tree.somefield
WHERE x_ast_tree.parent='$parent_id'

The problem is that you haven't set a criterion for joining the two tables, so it's doing a cross join.

SELECT x_ast.name
FROM x_ast
INNER JOIN x_ast_tree
  ON x_ast.somefield=x_ast_tree.somefield
WHERE x_ast_tree.parent='$parent_id'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文