Mysql,按最大细节重复行

时间:2017-07-18 18:12:00

标签: mysql jasper-reports

我有两张桌子 主表

|-----------|--------|------------|
| id_client | name   | ci         |
|-----------|--------|------------|
|    1      | B      |     123    |
|    2      | A      |     234    |
|    3      | C      |     345    |
|-----------|--------|------------|

设备细节

|-----------|--------------|
| id_client | id_equipment | 
|-----------|--------------|
|    1      | 1            |    
|    1      | 2            |     
|    2      | 3            |     
|-----------|--------------|

我期望的结果是: 所有有或没有设备的客户

|-----------|----------------|----------------|
| id_client | id_equipment   | numberEquipment|
|-----------|----------------|----------------|
|    1      | 1              |     Equip1     |
|    1      | 2              |     Equip2     |
|    2      | 3              |     Equip1     |
|    2      | -              |     Equip2     |
|    3      | -              |     Equip1     |
|    3      | -              |     Equip2     |
|-----------|----------------|----------------|

客户1有两个设备,这是最大的设备分配,然后,所有小于两个的客户必须填写详细空白两次。客户2分配了一台设备,第二台是空的,而客户3没有任何设备,那么这两台设备都是空的。

我在jasperreport上实现了交叉表,我必须定义de columnGroup,当组列的名称,设备2 ......等在该列组不显示的任何行上都不存在。

我希望有人可以帮忙。 感谢。

SELECT CONCAT('EQUIPMENT ',g.ennum) AS numberEquipment,
g.ID_CLIENTE as id_client, g.ID_EQUIPO as id_equipment,
(SELECT @running1:= 0) AS running1,(SELECT @previous1:= 0) AS previous1
FROM (
SELECT c.ID_CLIENTE, eq.ID_EQUIPO
@running1:=if(@previous1=concat(eq.ID_CLIENTE),@running1,0) + 1 as ennum, @previous1:=concat(eq.ID_CLIENTE) 
FROM CLIENTE AS c
LEFT JOIN detail_equipments AS eq ON eq.ID_CLIENTE = c.ID_CLIENTE
ORDER BY c.ID_CLIENTE ) AS g
GROUP BY g.ID_CLIENTE, g.ID_EQUIPO
ORDER BY ID_CLIENTE, g.ennum

这个节目

| ----------- | ---------------- | ---------------- | | id_client | id_equipment | numberEquipment | | ----------- | ---------------- | ---------------- | | 1 | 1 | Equip1 | | 1 | 2 | Equip2 | | 2 | 3 | Equip1 | | 3 | - | Equip1 | | ----------- | ---------------- | ---------------- |

0 个答案:

没有答案