我有这个问题:
$query = '
SELECT * FROM "rdm_item"
LEFT JOIN "rdm_tag" ON "rdm_item"."aff_id" = "rdm_tag"."aff_type_id"
WHERE "rdm_item"."aff_publish" = 4
ORDER BY "rdm_item"."aff_id"
DESC LIMIT 0,12';
和表格:
rdm_item列:aff_id/aff_publish/...
rdm_tag列:aff_id/type_id/...
我可以得到结果。
但对于$result[0]['aff_id']
,我希望rdm_item.aff_id
,但它会返回rdm_tag.aff_id
我的问题是什么?
答案 0 :(得分:2)
您需要从select中指定所需的列,并在其前面加上表名。例如:
$query = '
SELECT rdm_item.aff_id FROM "rdm_item"
LEFT JOIN "rdm_tag" ON "rdm_item"."aff_id" = "rdm_tag"."aff_type_id"
WHERE "rdm_item"."aff_publish" = 4
ORDER BY "rdm_item"."aff_id"
DESC LIMIT 0,12';
如果两个表中有重复的列名(即aff_id),请使用标识符,例如
$query = '
SELECT rdm_item.aff_id as rdm_item_aff_id, rdm_tag.aff_id as rdm_tag_aff_id FROM "rdm_item"
LEFT JOIN "rdm_tag" ON "rdm_item"."aff_id" = "rdm_tag"."aff_type_id"
WHERE "rdm_item"."aff_publish" = 4
ORDER BY "rdm_item"."aff_id"
DESC LIMIT 0,12';
然后,您可以使用result[0]['rdm_item_aff_id']
。