我有两张桌子 主表
|-----------|--------|------------|
| 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 | | ----------- | ---------------- | ---------------- |