2013-04-24 2 views
0

ОБНОВЛЕНИЕ: Большое спасибо ребятам. У вас есть мои обороты. Моя проблема, похоже, совсем другая.mySQL соединяется со ссылкой на родительский код

Я пытаюсь получить сумму (QTY) от TBL_INVTY, но я не могу правильно присоединиться к этой таблице с TBL_ITEM. Существует этот столбец PARENT_CODE, который усложняет мне вещи. Пусть мне лучше объяснить, как это ...

TBL_ITEM

+------+-------------+ 
| CODE | PARENT_CODE | 
+------+-------------+ 
| 2 |  NULL | 
| 2A |   2 | 
| 2B |   2 | 
| 3 |  NULL | 
| 4 |  NULL | 
+------+-------------+ 

TBL_INVTY

+------+-----+ 
| CODE | QTY | 
+------+-----+ 
| 2 | 2 | 
| 2A | 4 | 
| 2B | 1 | 
| 3 | 3 | 
| 4 | 5 | 
+------+-----+ 

И, приезжайте на это:

+------+-----+ 
| CODE | QTY | 
+------+-----+ 
| 2 | 7 | 
| 3 | 3 | 
| 4 | 5 | 
+------+-----+ 
+0

, что странно для возвращаемого результата от вас. Он работал в sql скрипке. Какова схема вашей таблицы? – sel

+0

Извините. Я все еще пытаюсь понять, почему я не могу выполнить эту работу с моей реальной схемой. Мой пример в значительной степени похож на него. – esandrkwn

ответ

2

шероховатой предположение относительно того, как это может работать:

SELECT IFNULL(tbl_item.parent_code, tbl_invty.code) AS t_code, SUM(qty) AS t_qty 
    FROM tbl_invty 
    LEFT JOIN tbl_item ON tbl_invty.code=tbl_item.code 
    GROUP BY t_code 

Ключ здесь используется IFNULL для выбора между родительским идентификатором, или если его нет, то обычный идентификатор.

+0

Я обновляю сообщение, чтобы показать, что я получил от этого. – esandrkwn

1

Попробуйте это,

SELECT CONVERT(code, SIGNED) as code ,sum(QTY) from TBL_INVTY group by CONVERT(code, SIGNED); 

SQL Fiddle Demo

+0

Ничего себе вы можете объяснить, как это работает без упоминания tbl_item и parent_code в запросе? Я не могу заставить его работать для меня в phpmyadmin. – esandrkwn

+0

check 'sqlfiddle demo' –

+0

это решение полезно, когда вам нужно избавиться от parent_code .. –

1

SQLFIDDLE demo

select CASE WHEN TBL_ITEM.PARENT_CODE IS NOT NULL 
     THEN 
     TBL_ITEM.PARENT_CODE 
     ELSE 
     TBL_ITEM.code 
     END, SUM(Qty) 
FROM 
TBL_INVTY 
join TBL_ITEM on TBL_INVTY.code=TBL_ITEM.code 

GROUP BY 
CASE WHEN TBL_ITEM.PARENT_CODE IS NOT NULL 
     THEN 
     TBL_ITEM.PARENT_CODE 
     ELSE 
     TBL_ITEM.code 
     END 
Смежные вопросы