我在几个表格中(在WordPress / WooCommerce中)在MySQL中创建一个视图,最终结果应如下所示:
id name price sku
1 test 9.99 ABC
用于获取数据的表格设置如下:
产品表
id name
1 test
METADATA TABLE
product_id meta_key value
1 price 9.99
1 sku ABC
我遇到问题的部分是如何让meta_key在最终视图表中显示为一列。
这是我到目前为止所做的(它不起作用,但也许它有助于显示我想要使用的逻辑,见下面的第3-4行):
SELECT
products.id,
products.name,
metadata.value AS price IF meta_key = price
metadata.value AS sku IF meta_key = sku
FROM `products`
INNER JOIN `metadata`
ON products.id = metadata.product_id
答案 0 :(得分:2)
您需要为联接添加其他条件以过滤meta_key,并为要创建列的每种类型的键执行连接:
SELECT
products.id,
products.name,
price.value AS price
sku.value AS sku
FROM `products`
INNER JOIN `metadata` AS price ON products.id = price.product_id AND price.meta_key = 'price'
INNER JOIN `metadata` AS sku ON products.id = sku.product_id AND sku.meta_key = 'sku'
请注意,这只会显示元数据表中同时具有价格和sku的产品。
如果您要展示具有/或的产品,请将INNER JOIN
更改为LEFT JOIN
s