Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2011, 00:24
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

не могу сделать запрос
доброй ночи, вы форумчане!

ситуация следующая, есть запрос
Код:
SELECT 
            shop_items_catalog_item_id as item_id,
            shop_items_catalog_marking as item_num_in,
            shop_items_catalog_name as item_name,
            shop_vendorcode as vendor,
            
            round(((SELECT shop_warehouse_items_count
            FROM shop_warehouse_items_table
            WHERE 
                shop_warehouse_id = 3 AND
                shop_items_catalog_item_id = item_id) 
            + 
            (SELECT shop_warehouse_items_count
            FROM shop_warehouse_items_table
            WHERE 
                shop_warehouse_id = 4 AND
                shop_items_catalog_item_id = item_id) 
            +
            (SELECT shop_warehouse_items_count
            FROM shop_warehouse_items_table
            WHERE 
                shop_warehouse_id = 5 AND
                shop_items_catalog_item_id = item_id
            )),0) as total_count, 
            
            round((SELECT shop_warehouse_items_count
            FROM shop_warehouse_items_table
            WHERE 
                shop_warehouse_id = 4 AND
                shop_items_catalog_item_id = item_id
            ),0) as bm,
            
            round((SELECT shop_warehouse_items_count
            FROM shop_warehouse_items_table
            WHERE 
                shop_warehouse_id = 5 AND
                shop_items_catalog_item_id = item_id
            ),0) as mm,
            
            round((SELECT shop_warehouse_items_count
            FROM shop_warehouse_items_table
            WHERE 
                shop_warehouse_id = 3 AND
                shop_items_catalog_item_id = item_id
            ),0) as sklad,
            
            (SELECT shop_prices_to_item_value
            FROM shop_prices_to_item_table
            WHERE 
                shop_list_of_prices_id = 4 AND
                shop_items_catalog_item_id = item_id
            ) as price_p,
            
            (SELECT shop_prices_to_item_value
            FROM shop_prices_to_item_table
            WHERE 
                shop_list_of_prices_id = 5 AND
                shop_items_catalog_item_id = item_id
            ) as price_r

        FROM 
            `shop_items_catalog_table`
        WHERE
            users_id = 19
как мне сделать в нем итоговую строку по 5-10 колонкам?
помогите пожалуйста, никак не получается сделать
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2011, 01:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ох нихрена себе жесть... таких запросов я еще не делал... что-то слишком не оптимизировано.
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2011, 10:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от mcavalon
как мне сделать в нем итоговую строку по 5-10 колонкам?
1. Повторить запрос без колонок 1-4, а "5-10" будут в sum()...
2. Пробежаться в цикле по полученой таблице, суммируя нужные колонки...
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2011, 13:32
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

мне нужно именно этот запрос доработать, другие создать нельзя. я так понимаю через union но у меня не получается
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2011, 21:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от mcavalon
через union
Для его использования нужно совпадение количества столбцов и их однотипность.

Повтори еще раз этот же запрос, но вместо
SELECT 
            shop_items_catalog_item_id as item_id,
            shop_items_catalog_marking as item_num_in,
            shop_items_catalog_name as item_name,
            shop_vendorcode as vendor,
            ...


помести константы такого же типа, как в первом селекте.

P.S.
Но запрос действительно смотрится плохо... Сделай хранимую процедуру для запроса такого типа

SELECT shop_warehouse_items_count
FROM shop_warehouse_items_table
WHERE 
        shop_warehouse_id = ? AND
        shop_items_catalog_item_id = ?


Даёшь процедуре два параметра, а тебе в обратную нужные значения...
Всё лучше будет смотреться...
Ответить с цитированием
  #6 (permalink)  
Старый 10.12.2011, 21:39
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

сделал так:
$param['data'][] = "
        SELECT
            shop_items_catalog_item_id as item_id,
            shop_items_catalog_marking as item_num_in,
            shop_items_catalog_name as item_name,
            shop_vendorcode as vendor,
            round((
                (SELECT shop_warehouse_items_count FROM shop_warehouse_items_table WHERE shop_warehouse_id = 3 AND shop_items_catalog_item_id = item_id) +
                (SELECT shop_warehouse_items_count FROM shop_warehouse_items_table WHERE shop_warehouse_id = 4 AND shop_items_catalog_item_id = item_id) +
                (SELECT shop_warehouse_items_count FROM shop_warehouse_items_table WHERE shop_warehouse_id = 5 AND shop_items_catalog_item_id = item_id)
            ),0) as total_count,
            round((SELECT shop_warehouse_items_count FROM shop_warehouse_items_table WHERE shop_warehouse_id = 4 AND shop_items_catalog_item_id = item_id),0) as bm,
            round((SELECT shop_warehouse_items_count FROM shop_warehouse_items_table WHERE shop_warehouse_id = 5 AND shop_items_catalog_item_id = item_id),0) as mm,
            round((SELECT shop_warehouse_items_count FROM shop_warehouse_items_table WHERE shop_warehouse_id = 3 AND shop_items_catalog_item_id = item_id),0) as sklad,
            (SELECT shop_prices_to_item_value FROM shop_prices_to_item_table WHERE shop_list_of_prices_id = 4 AND shop_items_catalog_item_id = item_id) as price_p,
            (SELECT shop_prices_to_item_value FROM shop_prices_to_item_table WHERE shop_list_of_prices_id = 5 AND shop_items_catalog_item_id = item_id) as price_r
        FROM `shop_items_catalog_table`
        WHERE 1 {FILTER_STRING} {ORDER_STRING} {LIMIT}
    ";
	$param['data'][] = "
        SELECT
            '' as item_id,
            '' as item_num_in,
            'Сумма' as item_name,
            '' as vendor,
            round(SUM(w2.shop_warehouse_items_count) + SUM(w3.shop_warehouse_items_count) + SUM(w4.shop_warehouse_items_count), 0) as total_count,
            round(SUM(w2.shop_warehouse_items_count), 0) as bm,
            round(SUM(w3.shop_warehouse_items_count), 0) as mm,
            round(SUM(w4.shop_warehouse_items_count), 0) as sklad,
            round(SUM(p1.shop_prices_to_item_value), 0) as price_p,
            round(SUM(p2.shop_prices_to_item_value), 0) as price_r
        FROM `shop_items_catalog_table` as i
            LEFT JOIN shop_warehouse_items_table as w2 ON  i.shop_items_catalog_item_id = w2.shop_items_catalog_item_id AND w2.shop_warehouse_id = 4
            LEFT JOIN shop_warehouse_items_table as w3 ON  i.shop_items_catalog_item_id = w3.shop_items_catalog_item_id AND w3.shop_warehouse_id = 5
            LEFT JOIN shop_warehouse_items_table as w4 ON  i.shop_items_catalog_item_id = w4.shop_items_catalog_item_id AND w4.shop_warehouse_id = 3
            LEFT JOIN shop_prices_to_item_table as p1 ON  i.shop_items_catalog_item_id = p1.shop_items_catalog_item_id AND p1.shop_list_of_prices_id = 4
            LEFT JOIN shop_prices_to_item_table as p2 ON  i.shop_items_catalog_item_id = p2.shop_items_catalog_item_id AND p2.shop_list_of_prices_id = 5
        WHERE 1 {FILTER_STRING} LIMIT 1
    ";
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать не могу допереть wermut Элементы интерфейса 8 14.07.2010 11:38
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18
Сделать AJAX запрос dumbass88 jQuery 1 11.04.2010 11:46
Как сделать POST запрос? clickpincode Общие вопросы Javascript 2 18.03.2010 14:57
Сам создал и не обрабатывает. Ответ нашел но под себя сделать не могу Алекс7к jQuery 1 09.08.2009 15:14