mysql-显示多个表中的不同列

时间:2014-06-13 07:51:22

标签: mysql

考虑下面的表和值...我需要显示表“TAG”中的所有列及其值以及另一个名为“ITEM”的表中的单列值

表名“标签”

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

我已经尝试过某种形式的问题,但它的所有情况都是...

这是我的查询,

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

任何人都可以帮我解决这个问题...

提前感谢...

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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