-1

我对下面的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 类构建的......查询的代码如下:

(似乎 where、join 等的位置对于 codeigniters db 类并不重要)

$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();
4

2 回答 2

0

你缺少一个.after 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
于 2012-08-10T13:28:32.260 回答
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
于 2012-08-10T13:28:36.837 回答