我在数据库中有两个表tour_foreign
& tour_foreign_residence
,并希望将这两个表合并在一起,从PHP代码中获取输出,如下例所示:
我的表格和价值观:
我想获得输出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 . '%"
")
如何解决?
答案 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)实现了别名,因为它们更容易使用。