2016-05-30 3 views
1

Я попытался сделать вид, используя объединение для 3 таблицы, каждая таблица работает успешно с нужными данными. после того, как я попытаюсь объединить, данные об totalqtyspb получат неверные данные.Таблица MySQL получает неверные данные после объединения

тип данных - варчар.

вот мой код

SELECT 
    p.PONumber, 
    p.POdate, 
    p.customername, 
    p.description, 
    p.poqty, 
    SUM(q.deliveryqty) AS TotalQtySpb, 
    p.poqty-SUM(q.deliveryqty) AS OTSPO 
FROM 
    tb_po p 
INNER JOIN 
    tb_rls q ON p.PONumber = q.PONumber AND p.description = q.description 
GROUP BY 
    p.PONumber, 
    p.PODate, 
    p.customername, 
    p.description, 
    p.poqty 
UNION 
SELECT 
    PONumber, 
    PODate, 
    CustomerName, 
    Description, 
    POQty, 
    '0' AS TotalQtySpb, 
    poqty AS OTSPO 
FROM 
    tb_po 
WHERE 
    poreleasedate = '' 
UNION 
SELECT 
    PONumber, 
    PODate, 
    CustomerName, 
    Description, 
    POQty, 
    '0' AS TotalQtySpb, 
    poqty AS OTSPO 
FROM 
    tb_po 
WHERE 
    poreleasedate != '' AND OutboundInbound = '' 

я не могу объяснить, почему данные о totalqtyspb получить неверные данные, уже пытаются изменения в Int тип данных до сих пор не работает.

+2

какие данные вы точно хотите получить и что именно возвращается? – Jhecht

+1

Оператор UNION будет просто брать оба набора данных, добавлять их и удалять обманки. Независимо от того, что означает «неправильные данные», оно должно присутствовать в отдельных запросах. –

+0

@ ÁlvaroGonzález yep Мне нужны оба набора данных, я забыл изменить тип данных, потому что слишком много внимания уделяйте предупреждению в редакторе запросов на phpmyadmin. –

ответ

2

Я подозреваю, что это потому, что вы выбираете TotalQtySpb раз как integer, и в два раза, как varchar, поэтому попробуйте заменить в третьем и втором запросе это:

'0' AS TotalQtySpb, 

Для этого:

0 AS TotalQtySpb, 

Хотя вы не сказали, что не так, так что это просто догадка.

+0

если я изменю это, запрос будет ошибкой, но я попробую изменить тип данных с вашим объяснением без изменения запроса –

+0

Зачем возникла ошибка? этот столбец 'int' в его первой позиции – sagi

+0

oh god его работы, ошибка появляется, потому что я попробовал запрос в редакторе sql на phpmyadmin, я просто забыл, что он будет работать, потому что тип данных int, слишком много концентрации в предупреждающем символе по запросу редактор, thx :) –