我通常使用一个公共列在两个表之间执行连接,在本例中是“product”。
现在来了一个没有联接的查询:
SELECT `rp_products`.`product_code`, `rp_log`.`customer_id`, `rp_products`.`product_name`
FROM rp_products, rp_log
WHERE (`rp_log`.`customer_id` = '111')
ORDER BY `rp_products`.`product_code` ASC, `rp_log`.`customer_id` ASC返回:
product_code customer_id product_name
105 111 Paintballs 2000PBS
105 111 Paintballs 2000PBS
106 111 Gloves
106 111 Gloves我想知道的是,它如何显示正确的“product_name”而不加入表之间的“product_code”?product_code不是主键或类似的东西。product_name是表中两个列的名称。
谢谢你抽出时间埃文。
发布于 2011-11-28 04:30:24
您正在执行整个rp_products表和rp_log子表的交叉乘积,该子表的customer_id值为111。我猜您在rp_log中有两个111个条目,在rp_products中有两个条目;那么联接中每个表(或子表)中的每个条目都将与另一个表中的每个条目对,以生成结果集中的四个(= 2×2)行。
包含更多来自rp_log和rp_products的专栏可能会为您澄清问题。
https://stackoverflow.com/questions/8291440
复制相似问题