2015-03-17 3 views
0

Я ищу решение для этого req 'SQL, потому что это не работает, например таблица_имя_пользователя и подобная таблица продуктов работают правильно, но когда я добавляю комментарии к таблице, это не работает , я знаю, что в столбце нет одного столбца, но как я могу сделать это правильно? Заранее спасибо.Объединение нескольких таблиц с разными столбцами для заказа по дате

SELECT DISTINCT * 
FROM (
    (SELECT DISTINCT lp.customer_id, lp.`date`, lp.`product_id`, lp.`classes`, Null as `comment` 
    FROM 
     `like_product` as lp, 
     `supplier_products` as sp 
    WHERE 
     sp.`product_id` = lp.`product_id` 
     AND sp.`supplier_id`=".$customer_id.") 

    UNION DISTINCT 

    (SELECT DISTINCT ls.`customer_id`,ls.`date`, Null as `product_id`, ls.`classes`, Null as `comment` 
    FROM 
     `like_supplier` as ls, 
     `supplier_products` as sp 
    WHERE 
     sp.`supplier_id`=".$customer_id." 
     AND sp.`product_id` = ls.`product_id`) 

    UNION DISTINCT 

    (SELECT com.`sender_id`, com.`date`, com.`product_id`, com.`classes`, com.`comment` 
    FROM `comments` as com)) as a 

ORDER BY a.`date` desc 
+1

опечатки ** ком \ '\' комментарий ** :-) попробовать ** ком \ 'комментарий \' ** – Alex

+1

Какие ошибки вы получаете? – dbinns66

+0

Каждый запрос в союзе должен возвращать одинаковое количество столбцов, и эти столбцы должны быть одного и того же типа данных. –

ответ

0

Попробуйте просто уточнить все псевдонимы и имена столбцов:..

SELECT DISTINCT 
    a.id, 
    a.`date`, 
    a.product_id, 
    a.classes, 
    a.comment 
FROM (
    (SELECT DISTINCT 
    lp.customer_id as id, 
    lp.`date` as `date`, 
    lp.`product_id` as product_id, 
    lp.`classes` as classes, 
    Null as comment 
    FROM 
    `like_product` as lp 
    INNER JOIN 
    (SELECT * 

    FROM 
     `supplier_products` 
    WHERE 
     supplier_id=".$customer_id." 
    ) as sp 
    ON 
    sp.`product_id` = lp.`product_id` 
    ) 

    UNION DISTINCT 

    (SELECT DISTINCT 
     ls.`customer_id` as id, 
     ls.`date` as `date`, 
     Null as `product_id`, 
     ls.`classes`, 
     Null as `comment` 
    FROM 
     `like_supplier` as ls 
    INNER JOIN 
     (SELECT 
     * 
     FROM 
     `supplier_products` 
     WHERE 
     supplier_id=".$customer_id." 
    ) as sp 
    ON sp.`product_id` = ls.`product_id`) 

    UNION DISTINCT 

    (SELECT 
     com.`sender_id` as id, 
     com.`date` as `date`, 
     com.`product_id` as product_id, 
     com.`classes` as classes, 
     com.`comment` as comment 
    FROM `comments` as com 
    ) 
) as a 

ORDER BY a.`date` desc 
Смежные вопросы