1

我想问一些问题如下:

有 3 个表,我想将字段类型 id 上的值 tbl1 与表中的 id 匹配

类型。我想获得列出每个组 ID 的所有类型名称的结果。

TB1 
Gid TypeID  Value
1   1   5
1   2   10
2   3   6

TBLTYPE
ID  NAME
1   A
2   B
3   C
4   D
5   E


RESULT that i need  

Type  value
A    5
B   10
C   
D   
E   
A   
B   
C   6
D   
E   
4

4 回答 4

3

试试这个查询

select  
    tmp.name, 
    tmp.gid, 
    a.value 
from 
    (select 
        a.*, 
        b.* 
    from 
        (select 
            distinct gid 
        from 
            tbl1 a
        )a, 
        tbl2 b
    ) tmp 
left join 
    tbl1 a 
on 
    a.typeid=tmp.id and 
    a.gid = tmp.gid 
order by      --OPTIONAL PART
    tmp.gid

编辑

派生表tmp是此查询的主表,它是通过具有唯一gid性和 tbl2 日期的交叉联接派生的,该日期为每个用户提供与每个组相关联的数据。tmp表与 tbl1 左连接,其中给出所需表的分数表。您可以在小提琴中单独运行每个派生表以了解其正常工作。

小提琴(为了正确理解每个查询单独提及)

小提琴

| NAME | GID |  VALUE |
-----------------------
|    A |   1 |      5 |
|    B |   1 |     10 |
|    C |   1 | (null) |
|    D |   1 | (null) |
|    E |   1 | (null) |
|    A |   2 | (null) |
|    B |   2 | (null) |
|    C |   2 |      6 |
|    D |   2 | (null) |
|    E |   2 | (null) |
于 2013-05-31T09:24:49.837 回答
0
SELECT TBLRESULT.NAME as Type, TB1.Value as value FROM TBLRESULT, TB1 LEFT OUTER JOIN TBLTYPE ON TB1.value = TBLTYPE.ID;
于 2013-05-31T09:16:37.277 回答
0
SELECT
TBLTYPE.Name As TYpe
TB1.Value,  
Value,
FROM TB1 
JOIN TBLTYPE on TBLTYPE.Id=TB1.ID
GROUP BY TBLTYPE.Type
于 2013-05-31T09:11:37.590 回答
0

你可以试试这个(基本上你需要为每个组查询):

SELECT
    t1.NAME as 'Type',
    IFNULL(t2.Value,'') as 'value'
FROM
    TBLTYPE t1
LEFT JOIN t2
    ON t2.TypeID = t1.ID
    AND t2.Gid = 1
UNION ALL
SELECT
    t1.NAME as 'Type',
    IFNULL(t2.Value,'') as 'value'
FROM
    TBLTYPE t1
LEFT JOIN t2
    ON t2.TypeID = t1.ID
    AND t2.Gid = 2
于 2013-05-31T09:24:06.083 回答