在连接中获取多行

时间:2012-08-10 13:25:35

标签: php mysql database select join

我在使用以下sql时遇到了一些麻烦......

第一步是:

从表中获取一行,从另一个表中连接多行......结果数组应如下所示:

array(
  field_1, 
  field_2, 
  field_3, 
  joined_array(
    field_a_array(
      field_a_a, 
      field_a_b, 
      field_a_c
    ), 
    field_b_array(
      field_b_a, 
      field_b_b, 
      field_b_c
    )
  ) 
) 

我的查询看起来像这样:

SELECT table_1.*, table_2.*
FROM table_1
JOIN table_2 ON table_2.field_1 = table_1.field_1
WHERE table_1.field_1 = xyz

但它只返回“table_2”中的一行......

那么,我做错了什么?

因评论#1编辑

以上查询不是实际查询,只是重写了我。

我使用codeigniter作为框架,因此查询是由codeigniter类构建的......查询的代码如下:

(似乎whereign,join等的位置对于codeigniters db class并不重要)

$this->db->select('events.*, genres_x_events.*');

$this->db->from('events');
$this->db->where('events.slug', $slug);
$this->db->where('events.deleted', 0);

$this->db->join('genres_x_events', 'genres_x_events.event_slug = events.slug');

$query = $this->db->get();

2 个答案:

答案 0 :(得分:0)

.之后您遗漏了table_2。在JOIN条件之前,您的WHERE应该是

SELECT table_1.*, table_2.*
FROM table_1
JOIN table_2 ON table_2.field_1 = table_1.field_1
WHERE table_1.field_1 = xyz

答案 1 :(得分:0)

看起来你错过了一个点:

在哪里说“table_2 *”我为你添加了一个点:

SELECT table_1.*, table_2.*
FROM table_1
JOIN table_2 ON table_2.field_1 = table_1.field_1
WHERE table_1.field_1 = xyz