1

私はSQLが初めてで、データを保持する2つのテーブルがあります(Adodbを使用しています)。どちらもそれらを接続するキーを持っているので、2 番目のテーブルに親 ID がある場合は、最初のテーブルから名前を選択したいと考えました。私は使っている:

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

これは正しいデータを含む配列を返しますが、そこに 2 回あります。(2つのテーブルから取得するように依頼したためだと思います):

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

別のテーブルのデータに基づいてあるテーブルからフィールドを選択し、結果のセットを 1 つだけ返すにはどうすればよいですか? 私は何を間違っていますか?

4

2 に答える 2

1

問題は、2 つのテーブルを結合する基準を設定していないため、クロス結合を行っていることです。

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'
于 2010-02-22T05:20:53.143 に答える
0

テーブル間の結合を見てください

于 2010-02-22T05:21:14.670 に答える