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 的名字还是 table2 的名字。

为确保 SQL 知道您指的是哪一个,请在列名前加上表名。

另外,我认为JOIN条件应该是tablename.joinitem而不是joinitem.tablename.

这是一个假设firstname您想要的示例来自table2

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