2013-11-18 2 views
0
SELECT a.delivery_date, 
     a.delivery_hour, 
     a.price as EX-ANTE, 
FROM mms_realtime_dispatch_prices_report a 

    UNION ALL 

SELECT b.delivery_date, 
     b.delivery_hour, 
     b.price as EX-POST, 
FROM mms_realtime_dispatch_prices_report b 

    UNION ALL 

SELECT c.region, 
     c.dem_rtdel, 
     c.date, 
FROM pub_demand_lwap c; 

    UNION ALL 

SELECT region, 
     report, 
     hour, 
     SUM(q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11) 
FROM pub_markets_bids_and_offers 
WHERE delivery date=03/16/2011 
GROUP BY hour 

помощь! необходимо объединить эту четыре таблицы в одну новую таблицу, не дублируя данные. Можете ли вы помочь мне объединить эти четыре таблицы в одну таблицу. это первый раз, когда я сталкиваюсь с этим. Мне очень нужна помощь :(объединить четыре стола в один новый стол

+0

Взгляните на отчетливый: http://dev.mysql.com/doc/refman/5.1/en/distinct-optimization.html –

+0

Чтобы UNION ALL работал, каждый ваш выбор должен возвращать одинаковое количество элементов и одинаковых типов. –

+0

http://stackoverflow.com/questions/6965333/mysql-union-distinct – andy

ответ

0

В SQL сервер профсоюзными работает только если есть такое же количество и тип столбцов вернуться по запросу.

0

Вы должны получить свой Union запрос правильный 1st, я могу видеть так много вещей неправильно с Query на данный момент,

  1. Ваше число столбцов retunred каждым выберите Арент же, Последний запрос возвращает 4 колонки и другие 3,
  2. Вы Aliasing столбцы во 2-ом запросе, это не будет иметь никакого эффекта поскольку в результирующем наборе видны только имена столбцов из инструкции первого выбора.
  3. Угадав имена колонок, у вас есть разные типы данных, которые вы пытаетесь СОЮЗ. Datatypes Возвращенные из всех выбирает, которые вы используете в UNION должен возвращать одни и те же типы данных, например
SELECT Column1_DataType1, Column2_DataType2, Column3_DataType3 FROM Table_Name1 
    UNION ALL 
    SELECT Column1_DataType1, Column2_DataType2, Column3_DataType3 FROM Table_Name2 
    UNION ALL 
    SELECT Column1_DataType1, Column2_DataType2, Column3_DataType3 FROM Table_Name3 

и так далее ....
После того, как Вы выполнили все эти условия, то вы можете сделать что-то вроде этого, чтобы исключить повторяющиеся строки из результирующего набора вы

;with CTE 
AS 
(
    SELECT ID_Column, rn = ROW_NUMBER() OVER (PARTITION BY Column1, Column2, Column3... ORDER BY ID ASC) 
    FROM (-- All of your UNION ALL Statements Can go here --)q 
) 
DELETE FROM CTE 
WHERE rn = 1 
+0

привет, сэр, идея состоит в том, чтобы выбрать столбец в четырех таблицах, а затем перенести в новую таблицу, новая таблица будет служить окончательной информацией, которую я покажу. для использования вставки ignore. Другая проблема в выбранном столбце, у меня есть данные отображения, которые я получу в одном столбце, а затем разделим на новые столбцы ex: col1: value: a | b | c станет cola | colb | colc и эквивалентным стоимость будет стоить $ b. c. im. Сложное время. Можете ли вы мне помочь? im новый программист. :( – Misty

Смежные вопросы