1

さまざまなテーブルからすべての行を選択しようと何時間も費やしましたが、まだ運がありません。私は得ています:

column name firstname is ambiguous 

テーブルには関係がありません。すべてのテーブルで一致する文字列を検索するためのクエリが必要なため、すべての行を選択したいだけです。検索バーがあります。

列番号が一致しない複数のテーブルからすべての行を選択するより良い方法はありますか? 試してみUNION ALLましたが、エラーが発生します。助けてください

 $mydb = new mysqli('localhost', 'root', '', 'db');
$stmt = $mydb->prepare("SELECT * FROM `table1` t1 JOIN `table2` t2 ON joinitem.t1 = joinitem.t2 where firstname = ? ");
stmt->bind_param('s', $firstname);
echo $mydb->error;
$stmt->execute();
4

2 に答える 2

1

WHERE次のように、節で具体的にしてみてください

SELECT * FROM `table1` t1 
   JOIN `table2` t2 ON t1.joinitem = t2.joinitem
   WHERE t1.firstname = ? 
于 2013-08-25T06:54:52.600 に答える
0

firstname両方のテーブルに列があるため、そのエラーが発生しました。どちらを意味するかを指定しfirstnameないと、SQL はクエリを table1 の firstname または table2 の firstname のどちらに基づいて行うかを判断できません。

SQL が意味するものを認識できるようにするには、列名の前にテーブル名を付けます。

また、条件はの代わりにJOINすべきだと思います。tablename.joinitemjoinitem.tablename

firstname以下は、が からのものであると仮定した例table2です。

SELECT *
FROM `table1` t1
JOIN `table2` t2 ON t1.joinitem = t2.joinitem
WHERE t2.firstname = ?
于 2013-08-25T06:58:26.220 に答える