INNER JOIN之后的SQL PIVOT

时间:2014-08-08 18:12:59

标签: mysql sql pivot inner-join pivot-table

我正在尝试从我的wordpress数据库中的数据创建和事件页面。 数据保存在2个表中($ wp_posts和$ wp_postmeta)。在INNER JOIN之后我需要PIVOT表$ wp_postmeta但经过多次尝试后我无法弄清楚如何去做。

我的查询是:

SELECT
PO.ID,
PO.post_title,
PO.post_content,
PM.post_id,
PM.meta_key,
PM.meta_value

FROM $wp_posts PO
INNER JOIN $wp_postmeta PM ON PO.ID = PM.post_id

我需要从表$ wp_postmeta中获取“meta_key”才能成为列名,然后才能选择meta_values

Database

感谢您对我的查询提供的帮助。

1 个答案:

答案 0 :(得分:4)

MySQL没有能力运行枢轴..但你可以假装一个支点。

注意:

您需要知道要转动的行数。

QUERY:

SELECT
    MAX(CASE meta_key WHEN '_EventOrganizerID' THEN meta_value END )AS _EventOrganizerID,
    MAX(CASE meta_key WHEN '_EventURL' THEN meta_value END )AS _EventURL,
    MAX(CASE meta_key WHEN '_EventCost' THEN meta_value END )AS _EventCost,
    MAX(CASE meta_key WHEN '_EventCurrencyPosition' THEN meta_value END )AS _EventCurrencyPosition,
    MAX(CASE meta_key WHEN '_EventCurrencySymbol' THEN meta_value END)AS _EventCurrencySymbol,
    MAX(CASE meta_key WHEN '_EventVenueID' THEN meta_value END )AS _EventVenueID,
    MAX(CASE meta_key WHEN '_EventDuration' THEN meta_value END )AS _EventDuration,
    MAX(CASE meta_key WHEN '_EventEndDate' THEN meta_value END )AS _EventEndDate,
    MAX(CASE meta_key WHEN '_EventStartDate' THEN meta_value END )AS _EventStartDate,
    MAX(CASE meta_key WHEN '_EventAllDay' THEN meta_value END )AS _EventAllDay
FROM
(   SELECT
        PO.ID,
        PO.post_title,
        PO.post_content,
        PM.post_id,
        PM.meta_key,
        PM.meta_value
    FROM $wp_posts PO
    INNER JOIN $wp_postmeta PM ON PO.ID = PM.post_id
) t
GROUP BY post_id

另一个注意:

如果你想从这个查询中选择meta_values ..因为它不仅仅是转动结果,而是实际选择你可以从这个查询中选择的特定内容,就像我转动它一样。