Создайте представление mysql из 2 таблиц, которое должно соответствовать значению первого столбца таблицы и значению второго столбца таблицы - PullRequest
0 голосов
/ 09 июля 2020

Таблица 1

Таблица 2

Привет, у меня есть две таблицы WordPress, с помощью которых я пытаюсь создать новое представление. Теперь, как убедиться, что новое представление, которое я генерирую, имеет значение, соответствующее значению первого столбца таблицы и значению второго столбца таблицы.

Например, я хочу создать представление, в котором entry_id таблицы 1 совпадает с id таблицы 2 и значение meta_key 4.3 должны быть равны '' в таблице 1 и payment_status = 'Paid' в таблице 2

Создать вид ниже, где Meta_value = 'Ind_City_1_Loc_1' в таблице 1 и статус платежа = 'оплачено' в таблице 2. Таблица 3

SELECT 
    MAX(CASE
        WHEN p.meta_key = 'given_transaction_id' THEN p.meta_value
        ELSE NULL
    END) AS 'TransactionID',
    MAX(CASE
        WHEN p.meta_key = '17' THEN p.meta_value
        ELSE '1'
    END) AS 'Quantity',
    MAX(CASE
        WHEN p.meta_key = '7.3' THEN p.meta_value
        ELSE NULL
    END) AS 'First Name',
    MAX(CASE
        WHEN p.meta_key = '7.6' THEN p.meta_value
        ELSE NULL
    END) AS 'Last Name',
    MAX(CASE
        WHEN p.meta_key = '8' THEN p.meta_value
        ELSE NULL
    END) AS 'Email',
    MAX(CASE
        WHEN p.meta_key = '9' THEN p.meta_value
        ELSE NULL
    END) AS 'Contact',
    MAX(CASE
        WHEN p.meta_key = '20.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 1',
    MAX(CASE
        WHEN p.meta_key = '27.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 2',
    MAX(CASE
        WHEN p.meta_key = '34.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 3',
    MAX(CASE
        WHEN p.meta_key = '41.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 4',
    MAX(CASE
        WHEN p.meta_key = '48.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 5'
FROM
    pday_gf_entry_meta AS p,
    pday_gf_entry AS pm
WHERE
    (p.entry_id = pm.id AND p.form_id = '12')
GROUP BY p.entry_id

1 Ответ

1 голос
/ 09 июля 2020

Я считаю, что то, что вы описываете, будет квалифицировано как VIEW, состоящее из JOIN - а не как новая таблица в целом.

Мои MySQL навыки немного пыльные, но технически вы можете INSERT на основе условия, которое вы описываете, но сначала вам нужно будет создать целевую таблицу.

В любом случае создание VIEW, вероятно, является кратчайшим путем к ваше решение.

Кроме того, если вы используете инструменты форматирования кода - будь то через панель инструментов WISYWIG или Markdown, вы можете получить лучший совет / внимание.

Например:

select MAX(CASE WHEN p.meta_key = 'given_transaction_id' THEN p.meta_value ELSE NULL END) AS 'TransactionID', MAX(CASE WHEN p.meta_key = '17' THEN p.meta_value ELSE '1' END) AS 'Quantity', MAX(CASE WHEN p.meta_key = '7.3' THEN p.meta_value ELSE NULL END) AS 'First Name', MAX(CASE WHEN p.meta_key = '7.6' THEN p.meta_value ELSE NULL END) AS 'Last Name', MAX(CASE WHEN p.meta_key = '8' THEN p.meta_value ELSE NULL END) AS 'Email', MAX(CASE WHEN p.meta_key = '9' THEN p.meta_value ELSE NULL END) AS 'Contact', MAX(CASE WHEN p.meta_key = '20.3' THEN p.meta_value ELSE NULL END) AS 'Member 1', MAX(CASE WHEN p.meta_key = '27.3' THEN p.meta_value ELSE NULL END) AS 'Member 2', MAX(CASE WHEN p.meta_key = '34.3' THEN p.meta_value ELSE NULL END) AS 'Member 3', MAX(CASE WHEN p.meta_key = '41.3' THEN p.meta_value ELSE NULL END) AS 'Member 4', MAX(CASE WHEN p.meta_key = '48.3' THEN p.meta_value ELSE NULL END) AS 'Member 5'

from pday_gf_entry_meta as p, pday_gf_entry as pm

where (p.entry_id = pm.id and p.form_id = '12')

group by p.entry_id```
...