【发布时间】:2018-11-09 10:31:10
【问题描述】:
只有当changes 表中的记录存在时,我才需要我的products 表中的连接值,在其他方式上只能从products 表中获取返回值,我尝试使用 LEFT JOIN 但做错了。表changes 和products 也具有相同的结构
SELECT
product.*,
parent.name,
parent.ignored,
child.name,
child.ignored,
changes.*
FROM
products AS product
inner join parent_cat AS parent on product.parent_id = parent.ID
inner join child_cat AS child on product.category_id = child.ID
left join changes AS changes on changes.product_id = product.SKURcrd
WHERE
product.slug = 'some slug'
返回的数据如下:
{#389 ▼
+"parent_id": 3
+"category_id": 142
+"product_id": null
+"slug": "some slug"
+"SKURcrd": "301832"
+"product_name": null
+"product_name_revert": "1911 AIR"
}
表格结构看起来像(示意图):
------------------------- ----------------------------
SKURcrd | product_name product_id | product_name
------------------------- ----------------------------
【问题讨论】:
-
样本数据、所需结果以及对您的逻辑的解释会有所帮助。
-
您的左连接本质上没有任何问题,但我怀疑在简化您的查询时您可能已经解决了问题。检查您的 WHERE 子句谓词以获取对
changes的引用或发布完整的查询。 -
如果
changes中存在某些记录,您还想要changes中不存在的记录吗?在这种情况下,您使用左连接,不存在的记录将只是null
标签: mysql sql database laravel