2014-06-13 60 views
0

不同列考慮以下表和values..i需要與從命名爲「ITEM」MySQL的顯示從多個表

另一個表單獨列的值一起顯示所有的列,並從表「TAG」其值

TABLE NAME 「TAG」

TAGID NAME RATE  
1 A 100 
2 B 200 
3 C 300 
4 D 8099 
5 E 400 
6 F 500 
7 G 600 
8 H 700 
9 I 200 
10 J 400 

表名 「項目」

ITEMID Name ITEM_QTY  
1 A 11 
2 B 22 
3 I 3 
4 A 8 
5 B 42 
6 C 5 
7 I 61 
8 B 74 
9 C 99 
10 A 48 

預期輸出

TAGID NAME RATE ITEM_QTY 
1 A 100 48 - (VALUE OF LAST INSERTED RECORD) 
2 B 200 74 
3 C 300 99 
4 D 8099 0 
5 E 400 0 
6 F 500 0 
7 G 600 0 
8 H 700 0 
9 I 200 61 
10 J 400 0 

我曾嘗試某種奎雷斯,但其所有的VIEN ..

這是我的查詢,

select * 
    from tag t1 
    join (select item_qty 
      from item t2 
      join tag t1 
    on t1.name=t2.name; 

任何人都可以請幫我出這個問題的......

在此先感謝...

回答

0

嘗試這樣

select tag.id,tag.name,rate,qty from tag join 
(select qty,name from 
ITEM where ITEM.id in 
(select max(id) from ITEM group by name)) as tt on tt.name=tag.name 
0

您可以嘗試爲

select 
t.tagid, 
t.name, 
t.rate, 
i.item_qty 
from tag t 
join 
(
    select name,max(item_qty) as item_qty 
    from item group by name 

)i 
on i.name = t.name 

DEMO

如果需要從項目表中的所有數據,你的輸出顯示您可以使用左連接,而不是內部聯接

select 
t.tagid, 
t.name, 
t.rate, 
coalesce(i.item_qty,0) as item_qty 
from tag t 
left join 
(
    select name,max(item_qty) as item_qty 
    from item group by name 

)i 
on i.name = t.name 

DEMO

0

假設上次插入的記錄在項目表中的ID最高,首先需要獲得每個項目名稱的最高ID。

SELECT 
Name, MAX(ITEMID) AS max_id 
FROM 
item 
GROUP BY Name; 

通過此查詢(在以下查詢中作爲子查詢執行),我們爲每個max_id獲取對應的行。

SELECT i.* 
FROM item i 
JOIN (
    SELECT 
    MAX(ITEMID) AS max_id 
    FROM 
    item 
    GROUP BY Name 
) si ON i.ITEMID = si.max_id; 

下面是如何得到The Rows Holding the Group-wise Maximum of a Certain Column更多的例子。

最後的查詢是

SELECT TAGID, tag.NAME, RATE, COALESCE(ITEM_QTY, 0) AS ITEM_QTY 
FROM 
tag 
LEFT JOIN (
    SELECT i.* 
    FROM item i 
    JOIN (
     SELECT 
     MAX(ITEMID) AS max_id 
     FROM 
     item 
     GROUP BY Name 
    ) si ON i.ITEMID = si.max_id 
) items ON tag.Name = items.Name 
帶電作業