7

次のクエリを使用して、3 つのテーブルの内部結合をクエリしています。

2 つのテーブルには、「name1」という名前の列があります。次のエラーが表示されます。

Column 'exName' in field list is ambiguous

「name1」列は外部キーであるため、情報は同一である必要があります。誰かがこれを回避するコンパクトな方法を提案できますか?

$result = mysql_query("SELECT name1,name2,name3 FROM `table1` INNER JOIN `table2` ON table2.name1=table1.PrimaryKey INNER JOIN `table3` ON table3.name1=table1.PrimaryKey"); 
4

5 に答える 5

17

列名をテーブル名で修飾する必要があります。

 SELECT table1.name1, table2.name1, etc.
于 2013-02-23T01:58:53.560 に答える
1

選択リストの列を次のように参照する必要があります。

SELECT <table name>.name1, <table name>.name2, <table name>.name3

テーブルを from 句に導入するときにテーブルにエイリアスを与えて、いくつかのキーストロークを節約し、物事をきれいにすることもできます。

SELECT 
     t1.name1
    ,t2.name2
    ,t3.name3
FROM table1 AS t1
INNER JOIN table2 AS t2
    ON t2.name1 = t1.PrimaryKey
INNER JOIN table3 AS t3
    ON t3.name1 = t1.PrimaryKey
于 2013-02-23T02:01:43.987 に答える
1

正しい質問ではないかもしれませんが、次のようなものを作成するにはどうすればよいでしょうか。

Table a
-------
id | x | y 
1 | 2 | 3 


Table b
-------
id | a_id | x | y 
1  | 1    | 2 | 3


SQL

SELECT * FROM
JOIN a.id = b.a_id

結果は次のようになります。

array(
    a.id: 1,
    b.id: 1,
    a.x: 2
)

私のポイントは何ですか

同じテーブルがcolumn namesマージされ、最初のテーブルの ID が勝つと思います。

于 2015-05-31T19:50:52.603 に答える
0
SELECT T1.name1,T2.name2,T3.name3 
FROM `table1` T1 
INNER JOIN `table2` T2 ON t2.name1=t1.PrimaryKey 
INNER JOIN `table3` T3 ON t3.name1=t1.PrimaryKey
于 2013-02-23T02:00:04.327 に答える