Выбрать оператор, который объединяет похожие строки с определенными идентификаторами? - PullRequest
0 голосов
/ 16 апреля 2010

У меня есть таблица warehouse_products, которая определяет, сколько товаров на складах

Допустим, у меня есть 20 записей / строк в таблице, некоторые строки могут содержать один и тот же идентификатор продукта, но в другом складе

Мне нужно создать оператор выбора, который дает каждому продукту по одной строке, и в этой строке у меня должно быть количество на складе A и складе B ..

так что в итоге я получу, например, 10 строк, которые содержат все данные

альтернативный текст http://img199.imageshack.us/img199/1948/stackoverflow.jpg

Ответы [ 2 ]

0 голосов
/ 16 апреля 2010
select p1.wh_id as whA_id, p2.wh_id as whB_id, 
    coalesce(p1.p_id, p2.p_id) as p_id, p1.qty as qty_A, 
    p2.qty as qty_B, coalesce(p1.enabled, p2.enabled) as enabled
from warehouse_products p1
full outer join warehouse_products p2 on p1.p_id = p2.p_id
    and p1.wh_id = 'A' and p2.wh_id = 'B'

Обновление:

Я забыл, что MySql не поддерживает FULL OUTER JOIN. У меня нет времени, чтобы обновить запрос прямо сейчас, но есть примеры того, как получить те же результаты здесь .

0 голосов
/ 16 апреля 2010

Примерно так:

SELECT id, domain_id, wh_product_id, SUM(item_bom.qty_bom) qty_total
FROM warehouse_products GROUP BY id, domain_id, wh_product_id

Вы не сможете показать warehouse_id . Я бы даже не подумал, что wh_product_id - я включил его здесь, но если у вас 20 строк вместо 10, удалите его.

...