Непонятная работа UNION |
Здравствуйте, гость ( Вход | Регистрация )
Непонятная работа UNION |
NetWorm |
12.11.2011, 20:53
Сообщение
#1
|
Студент Группа: Участник Сообщений: 24 Регистрация: 2.8.2011 Пользователь №: 2784 Спасибо сказали: 0 раз(а) Репутация: 0 |
И в результате возвращаются двойные строки. т.е. он не объединяет SUM(0) AS count2 из первого запроса и SUM(o_sklad.count) AS count2. Короче мне нужно получить одну таблицу с результатами двух запросов |
|
|
ilyabvt |
12.11.2011, 22:03
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
А мне непонятна логика запроса.
Цитата o_sklad.date <'01.11.2011' Цитата o_sklad.date <'30.11.2011' Мне кажется тут будет наблюдаться пересечение. Цитата SUM(0) Зачем суммировать 0? Цитата SUM(0) AS count2 из первого запроса В первом запросе у вас "0 AS count2 ". Но это уже мелочь Цитата И в результате возвращаются двойные строки "UNION ALL" и пересечение дат дали вполне предсказуемый результат. P.S. Я не спец. по SQL, могу и ошибаться... Сообщение отредактировал ilyabvt - 12.11.2011, 22:05 |
|
|
Iron Bug |
12.11.2011, 23:57
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Короче мне нужно получить одну таблицу с результатами двух запросов UNION просто склеивает результаты в одну таблицу. для объединения используется JOIN и запрос конструируется более хитро. но в данном случае вообще непонятен сам смысл задачи: зачем-то часть записей два раза вытаскивается (сначала с нулями, потом - с какими-то суммами), а другая часть - один раз. так что я даже затрудняюсь сказать, как это лучше решить, потому что просто не вижу смысла в суммировании нулей. |
|
|
NetWorm |
13.11.2011, 5:52
Сообщение
#4
|
Студент Группа: Участник Сообщений: 24 Регистрация: 2.8.2011 Пользователь №: 2784 Спасибо сказали: 0 раз(а) Репутация: 0 |
Короче мне нужно получить одну таблицу с результатами двух запросов UNION просто склеивает результаты в одну таблицу. для объединения используется JOIN и запрос конструируется более хитро. но в данном случае вообще непонятен сам смысл задачи: зачем-то часть записей два раза вытаскивается (сначала с нулями, потом - с какими-то суммами), а другая часть - один раз. так что я даже затрудняюсь сказать, как это лучше решить, потому что просто не вижу смысла в суммировании нулей. Мне из 3 колонок одних и тех же надо получить 4... В первом запросе мне надо получить остатки на начало месяца, во втором на конец месяца, одним запросом |
|
|
ilyabvt |
13.11.2011, 8:53
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Цитата Мне из 3 колонок одних и тех же надо получить 4 Через UNION вы такого не сделаете. А вводить нулевую колонку - извращение. Цитата В первом запросе мне надо получить остатки на начало месяца, во втором на конец месяца Ну тогда вам надо указывать диапазон, а не просто "<'30.11.2011'" в противном случае вы получаете не только за конец месяца, но вообще за весь месяц и за все предыдущие месяцы. Покажите структуру этих трех таблиц и как они связаны. |
|
|
NetWorm |
13.11.2011, 8:59
Сообщение
#6
|
Студент Группа: Участник Сообщений: 24 Регистрация: 2.8.2011 Пользователь №: 2784 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата Мне из 3 колонок одних и тех же надо получить 4 Через UNION вы такого не сделаете. А вводить нулевую колонку - извращение. Цитата В первом запросе мне надо получить остатки на начало месяца, во втором на конец месяца Ну тогда вам надо указывать диапазон, а не просто "<'30.11.2011'" в противном случае вы получаете не только за конец месяца, но вообще за весь месяц и за все предыдущие месяцы. Покажите структуру этих трех таблиц и как они связаны. Я разобрался все!
|
|
|
Текстовая версия | Сейчас: 22.11.2024, 11:06 |