Удаление значения NULL в SQL Операторы JOIN и UNION в SQL - PullRequest
0 голосов
/ 23 мая 2018

[решено] как удалить значение NULL только в поле provider_order только, в моем случае таблица использовала JOIN Table и UNION

Вот моя схема базы данных и My SQLЗапрос

http://sqlfiddle.com/#!9/f77862/2

Чтобы четко описать здесь, я прилагаю картинку

Красная линия круга, который должен быть удален

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Нельзя удалить только это поле подряд.Однако вы можете избавиться от всей строки, просто используя предложение WHERE для фильтрации записей с нулевыми значениями.

http://sqlfiddle.com/#!9/f77862/42

SELECT
    m.provider_id,
    m.provider_name,
    p.purchase_order_code,
    NULL AS purchase_order_sample_code,
    p.provider_id AS provider_order
FROM mst_provider AS m
LEFT JOIN trx_purchase_order AS p
    ON (m.provider_id = p.provider_id)
WHERE p.provider_id != NULL
UNION
SELECT
    m.provider_id,
    m.provider_name,
    p.purchase_order_code,
    NULL AS purchase_order_sample_code,
    p.provider_id AS provider_order
FROM mst_provider AS m
RIGHT JOIN trx_purchase_order AS p
    ON (m.provider_id = p.provider_id)
UNION
SELECT
    m.provider_id,
    m.provider_name,
    NULL,
    s.purchase_order_sample_code,
    s.provider_id
FROM mst_provider AS m
RIGHT JOIN trx_purchase_order_sample AS s
    ON (s.provider_id = m.provider_id)
0 голосов
/ 23 мая 2018

Я предполагаю, что вы хотите отфильтровать, где provider_order имеет значение null?

Я завернул весь ваш запрос как подзапрос и поместил предложение where в конце, возвращая только записи, в которых provider_order не равен нулю.

http://sqlfiddle.com/#!9/f77862/50/0

SELECT *
FROM (
    SELECT m.provider_id,
        m.provider_name,
        p.purchase_order_code,
        NULL AS purchase_order_sample_code,
        p.provider_id AS provider_order
    FROM mst_provider AS m
    LEFT JOIN trx_purchase_order AS p
        ON (m.provider_id = p.provider_id)

    UNION

    SELECT m.provider_id,
        m.provider_name,
        p.purchase_order_code,
        NULL AS purchase_order_sample_code,
        p.provider_id AS provider_order
    FROM mst_provider AS m
    RIGHT JOIN trx_purchase_order AS p
        ON (m.provider_id = p.provider_id)

    UNION

    SELECT m.provider_id,
        m.provider_name,
        NULL,
        s.purchase_order_sample_code,
        s.provider_id
    FROM mst_provider AS m
    RIGHT JOIN trx_purchase_order_sample AS s
        ON (s.provider_id = m.provider_id)
    ) _temp
WHERE provider_order IS NOT NULL
0 голосов
/ 23 мая 2018

Что вы подразумеваете под удалением?Удаление всей строки или просто отображение чего-то другого, кроме NULL, в provider_order.Если вы ищете позже, то вы можете использовать COALESCE

Редактировать: Внесены изменения только в вашу скрипку: http://sqlfiddle.com/#!9/f77862/46

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...