【问题标题】:access multiple tables in mysql database访问mysql数据库中的多个表
【发布时间】:2012-08-17 04:54:25
【问题描述】:

我有

$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'];

谢谢

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

【问题讨论】:

  • 你需要放别名,最好使用join来连接2个表。它将提高性能

标签: php mysql database pdo relational-database


【解决方案1】:

使用SQL Alias

例如:SELECT column_name AS alias_name FROM table_name

【讨论】:

    【解决方案2】:

    添加别名以标识您的表。

    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
    

    【讨论】:

    • 你能加入 3 个不同的表吗?让三个表使用 JOIN 似乎让我感到困惑?这可能吗?
    • 是的,它可以加入 3 个表。但这些表之间应该有一个链接。
    • 好的,我会找例子。感谢您回答我的问题
    【解决方案3】:

    尝试命名字段:

    SELECT table1.name AS table1name
    

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

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

    【讨论】:

      【解决方案4】:

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

      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
      

      【讨论】:

        【解决方案5】:

        添加别名

        $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");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-29
          • 2013-08-11
          • 1970-01-01
          • 1970-01-01
          • 2015-04-28
          • 1970-01-01
          • 2016-12-24
          • 1970-01-01
          相关资源
          最近更新 更多