将几个数据库表组合在一起?

时间:2011-10-18 21:57:53

标签: php mysql codeigniter join

我在数据库中有两个表tour_foreign& tour_foreign_residence,并希望将这两个表合并在一起,从PHP代码中获取输出,如下例所示:

我的表格和价值观:

enter image description here enter image description here

我想获得输出tour_foreign.id = tour_foreign_residence.relation

  

伊斯坦布尔的一周之旅_1 88888& 99999 $ 112233 $ 445566 |三晚两天| 15:29
  伊斯坦布尔2周的一周之旅55555& 66666 $ 77777 |三晚两天| 12:03
  伊斯坦布尔3周的一周之旅11111& 22222 $ 33333 $ 44444 |三晚两天| 12:03

我的尝试就是这样,但它没有告诉我上面我想要的东西:

$this -> db -> query("
    SELECT
           @rownum := @rownum + 1 rownum,
           tour_foreign.id, 
           tour_foreign.name, 
           tour_foreign_residence.name_re,  
           tour_foreign.term,
           tour_foreign.time_go, 
           tour_foreign.time_back,
           tour_foreign.type_of_vehicle
    FROM   tour_foreign 
           INNER JOIN tour_foreign_residence 
             ON ( tour_foreign.id = tour_foreign_residence.relation )
           JOIN (SELECT @rownum := 0) r
    WHERE  tour_foreign.name LIKE "%' . $find . '%" 
            OR tour_foreign_residence.name_re LIKE "%' . $find . '%"    
")

如何解决?

2 个答案:

答案 0 :(得分:0)

尝试使用GROUP_CONCAT()加入tour_foreign_residence表中的名称

答案 1 :(得分:0)

不确定为什么要加入@rownum,它可能会搞乱你的结果集。尝试取出它,看看它是否有效。

你的内部连接看起来没问题,除了我从未见过包裹的parens,但我怀疑它会按预期工作。要测试您的查询,您可以删除复杂的where子句,只需添加类似于tour_foreign.id = 1的内容。

类似的东西:

SELECT
    tf.*
FROM 
    tour_foreign AS tf
INNER JOIN
    tour_foreign_residence AS tfr
ON
    tfr.relation = tf.id
WHERE
    tf.id = 1

我为更长的表名(tf和tfr)实现了别名,因为它们更容易使用。