php - 在 mysql 中是否还有其他解决此问题的可能性

标签 php mysql codeigniter

我的数据库中有 reservation、booking、billing 三个表。我正在使用连接查询。

我在这 3 个表中有五个以上的公共(public)字段。在执行查询时,公共(public)字段被覆盖。

有没有办法在不覆盖的情况下从 3 个表中获取每个值,也不为这些公共(public)字段提供别名?

[更新:根据最近的评论,OP 正在询问如何使用 CodeIgniter 获取此类列]

最佳答案

mysql> CREATE TABLE reservation (
    ->  id INT,
    ->  data VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.42 sec)

mysql> CREATE TABLE booking (
    ->  id INT,
    ->  data VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.06 sec)

mysql> CREATE TABLE billing (
    ->  id INT,
    ->  data VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO reservation (id, data) VALUES (1, 'Lorem ipsum'), (2, 'Dolor sit amet');
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> INSERT INTO booking (id, data) VALUES (1, 'Consectetur adipisicing'), (2, 'Consectetur adipisicing');
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> INSERT INTO billing (id, data) VALUES (1, 'Tempor incididunt'), (2, 'Ut labore');
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql>
mysql> SELECT *
    -> FROM reservation
    -> LEFT JOIN booking ON reservation.id=booking.id
    -> LEFT JOIN billing ON booking.id=billing.id;
+------+----------------+------+-------------------------+------+-------------------+
| id   | data           | id   | data                    | id   | data              |
+------+----------------+------+-------------------------+------+-------------------+
|    1 | Lorem ipsum    |    1 | Consectetur adipisicing |    1 | Tempor incididunt |
|    2 | Dolor sit amet |    2 | Consectetur adipisicing |    2 | Ut labore         |
+------+----------------+------+-------------------------+------+-------------------+
2 rows in set (0.00 sec)

更新

OP 现在询问如何在我从未使用过的 CodeIgniter PHP 框架中执行此操作。我所能提供的只是一般的 PHP 建议。大多数数据库库都提供了将查询结果作为数值数组和关联数组获取的方法。如果有重复的列名,则必须避免使用第二个列名并坚持使用数值数组。例如,而不是这个:

while($row = $res->fetch(PDO::FETCH_ASSOC)){
}

...你必须这样做:

while($row = $res->fetch(PDO::FETCH_NUM)){
}

关于php - 在 mysql 中是否还有其他解决此问题的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5258106/

相关文章:

php - 配置文件 View 更新

php - PHP for iOS 中的 JSON 编码多重查询返回

mysql - SQL 标准 UPSERT 调用

php - 当我使用输出参数调用存储过程时,mysql 中出现错误代码 1414

php - 将 ajax 返回的值传递到输入字段

php - 等待graph api/batch api的结果

mysql - MySQL 中的 WHILE 语法错误

来自别名未知列的 MySQL 总和

php - 如何为 Multi-Tenancy SaaS产品设计有效的数据库?

javascript - 获取内部服务器错误 (500) - CodeIgniter