3

3つのテーブルを使用した結合クエリがありますが、この問題が発生します 列 'id_f' in where clause is ambiguous

$id_f=$_GET['id_f'];

$query="SELECT *, s.name AS van, st.name AS naar, p.titl, p.vname
FROM p1_users, f_confirm AS v 
INNER JOIN s_steden AS s ON v.van = s.id
INNER JOIN s_steden AS st ON v.naar = st.id
INNER JOIN p1_users AS p ON v.id_f = p.id_f
AND DATE_FORMAT(date,'%Y-%c-%d')WHERE id_f='$id_f'";
$result=mysql_query($query)or die('Wrong query : ' . mysql_error());
$row=mysql_fetch_assoc($result);

誰でも助けることができますか?

4

4 に答える 4

3

つまり、2 つ以上のテーブルに「id_f」という名前の列が含まれていることを意味します (この場合は p1_users と f_confirm )。次のように、関連するテーブルを指定する必要があります。

AND DATE_FORMAT(date,'%Y-%c-%d')WHERE p.id_f='$id_f'";
于 2011-01-18T13:44:48.847 に答える
1

An ambiguous field is a field in a query that is in two or more tables (or subqueries).

you have two options.

  1. Use table_name prefix on each ambiguous field (table1.field_x, table2.field_x)
  2. Use table alias, and use the alias as prefix on each ambiguous field (alias1.x, alias2.x).

In your example, in the INNER JOIN statement you use the alias for "v.id_f = p.id_f", but then, in the WHERE clause you forget the alias.

于 2011-07-13T15:53:20.247 に答える
1

2 つのテーブルにその名前の列があるため、where 句でv.id_forを使用する必要があるため、あいまいさを解消する必要があります。p.id_f

inner join. _

を使用する場合、これは必須ではないかもしれませんが、natural joinこれらの使用はお勧めしません。

于 2011-01-18T13:43:07.183 に答える
0

問題は WHERE 句にあります。DATE_FORMAT の後に id_f='$id_f' と記述しましたが、このクエリの他のテーブルにこの列 (id_f) があります。したがって、データベースは、本当に使用したいテーブルを認識していません。

于 2011-01-18T13:45:07.593 に答える