SQL запросить отдельный, внутренний или объединить 2 столбца одной таблицы и отобразить все поля - PullRequest
0 голосов
/ 28 января 2020

Я разрабатываю плагин WP и у меня есть таблица с идентификаторами, именем, фамилией, мобильным телефоном и телефоном

Я хочу выполнить запрос, который отличается от мобильного и телефон значения, и они не являются нулевыми среди других полей

Check table fields

, и я хочу отобразить как следующее изображение

Need this result

Пока у меня есть этот запрос, который отображает список со всеми уникальными мобильными телефонами и телефоном, объединенными в 1 столбец

$qry ="SELECT DISTINCT *
FROM (SELECT it.phone AS 'phone'
        FROM table_name it
    UNION ALL
    SELECT itt.mobile AS 'mobile'
        FROM table_name itt  
) AS a";

Также пробовал это, но не работает

    $qry ="SELECT DISTINCT *
    FROM (SELECT it.mobile AS 'mobile',
                it.smsgroup_id AS 'smsgroup_id',
                it.name AS 'name',
                it.surname AS 'surname',
                it.phone AS 'phone'
            FROM $table_name it
WHERE it.mobile != ''
        UNION ALL
        SELECT itt.mobile AS 'mobile',
                itt.smsgroup_id AS 'smsgroup_id',
                itt.name AS 'name',
                itt.surname AS 'surname',
                itt.phone AS 'phone'
            FROM $table_name rt
                INNER JOIN $table_name itt ON itt.smsgroup_id = rt.smsgroup_id
    ) AS a";

Ответы [ 3 ]

0 голосов
/ 28 января 2020

попробуйте этот запрос

SELECT 

KashifSolangi.Named AS Named,
KashifSolangi.surname AS surname,
KashifSolangi.phone  AS phone_no,
IF (  KashifSolangi.mobile = KashifSolangi.phone,  NULL, KashifSolangi.mobile ) AS Mobile_no


    FROM 
    (

        SELECT 'Kashif Mustafa' AS Named, 'Solangi' AS surname, 155 AS mobile, 155 as phone
        UNION 
        SELECT 'Saqaf Mustafa' AS Named, 'Solangi Qazi' AS surname, 200 AS mobile, 146 AS phone
        UNION 
        SELECT 'Ghulam Mustafa' AS Named, 'Solangi Khan' AS surname, 120 AS mobile, 120 AS phone
        UNION 
        SELECT 'Arif Solangi' AS Named,'Solangi Lahoti' AS surname,  NULL AS mobile, 130 AS phone

    ) AS KashifSolangi  

0 голосов
/ 28 января 2020

Вы можете отменить поворот, используя union all (хотя MySQL поддерживает боковые объединения в самой последней версии).

Просто отфильтруйте пустые строки:

(SELECT name, surname, phone
 FROM table_name it
 WHERE phone <> ''
) UNION ALL
(SELECT name, surname, mobile
 FROM mytable it
 WHERE phone <> ''
)
0 голосов
/ 28 января 2020

union (в отличие от union all) применяет уникальность:

SELECT name, surname, phone
FROM   mytable
UNION
SELECT name, surname, mobile
FROM   mytable
...