如果满足条件,请选择一列

时间:2013-12-11 21:38:26

标签: mysql

我在几个表格中(在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

1 个答案:

答案 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