1

我有

$mySQL = $db -> prepare("SELECT table1.users,table1.name,table2.img,table2.name,table2.users FROM table1,table2 WHERE table1.users = table2.users");

$row = $mySQL->fetch(PDO::FETCH_ASSOC);

我可以回声:

echo $row['name'];

但是它怎么知道从 table1 或 table2 中获取名称?我可以做类似的事情吗

echo $row['table1.name'];

谢谢

另外,这是从多个表中获取数据的最佳方式吗?谢谢

4

5 回答 5

2

使用SQL 别名

例如:SELECT column_name AS alias_name FROM table_name

于 2012-08-17T04:56:40.767 回答
1

尝试命名字段:

SELECT table1.name AS table1name

然后它将在结果集中显示为table1name,因此不可能发生冲突。

连接是从多个表中获取数据的一种非常有效的方式——它在很大程度上取决于数据库的结构、要检索的数据等等。

于 2012-08-17T04:56:59.613 回答
1

您需要为列提供不同的别名:

SELECT table1.users AS users_1, table2.users AS users_2,
       table1.name AS name_1, table2.name AS name_2, table2.img
FROM table1,table2 
WHERE table1.users = table2.users
于 2012-08-17T04:57:13.963 回答
1

添加别名

$mySQL = $db -> prepare("SELECT table1.users AS tbl1users , table1.name AS tbl1name , table2.img AS tbl2img, table2.name as tbl2name, table2.users as tbl2users FROM table1,table2 WHERE table1.users = table2.users");
于 2012-08-17T04:57:35.223 回答
1

添加别名以标识您的表。

SELECT table1.users as tab1user,table1.name,table2.img,table2.name,table2.users as tab2user
 FROM table1 JOIN table2 in table1.users = table2.users

加入表的最佳方式。它会提高性能。您必须根据自己的要求选择合适的连接方式。按照此链接加入

http://www.w3schools.com/sql/sql_join.asp

编辑: *加入 3 个表*

 select ......
 FROM table1 JOIN table2 in table1.users = table2.users
 JOIN Table3 in table2.id=table3.id
于 2012-08-17T04:58:44.567 回答