【问题标题】:Getting both Id's from inner join从内部连接中获取两个 ID
【发布时间】:2011-04-16 04:14:06
【问题描述】:

我正在开发一个使用 php Codeigniter 框架的网站,但在将表格连接在一起时遇到了问题。

两张桌子分别是饭菜和餐厅,只是有版本

meals: id, restaurant_id, price, etc.

restaurants: id, name, location, etc.

为了进行查询,我使用以下代码:

$this->db->join('restaurants', 'restaurants.id = meals.restaurant_id');
$query = $this->db->get('meals');

返回与运行此相同的结果:

$query = $this->db->query('SELECT * FROM meals INNER JOIN restaurants ON restaurants.id = meals.restaurant_id'); 

问题是,当我以 php 数组或对象的形式(由 codeigniter DB 类提供)访问结果时,只返回一个 id,即餐厅 id,而我需要用餐 id。怎么让它吐出餐号呢?

【问题讨论】:

    标签: php mysql codeigniter join


    【解决方案1】:

    我对您当前的工具(php/codeigniter/etc.)没有经验,我假设问题的出现是因为两个表的“id”列具有相同的名称? (这通常不是问题……但也许工具处理不正确?) 至于 SQL 查询,区分同名列的一种方法是在 select 语句中使用别名。这是一个例子:

    select
        m.id as meal_id,
        m.price as meal_price,
        r.id as restaurant_id,
        r.name as restaurant_name,
        r.location as restaurant_location
    from meals as m
    inner join restaurants as r on r.id = m.restaurant_id
    

    【讨论】:

    • 谢谢。原来有人用相同的解决方案遇到了完全相同的问题:link
    【解决方案2】:

    试试这个

    SELECT t1.id as mid,t2.id as rid
      FROM table_meals as t1
      inner JOIN table_restaurant as t2 ON t2.id = t1.`restaurant_id`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-29
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多