我有三个表:reserva,cliente,estancia
reserva
___________
id
id_cliente
entrada
salida
...
cliente
__________
id
nombre
apellidos
telefono
dni
....
estancia
__________
id
id_cliente
id_reserva
其中cliente和reserva具有1对1关系。当前,我使用此查询。
SELECT r.id as rid,
r.entrada as rentrada,
r.salida as rsalida,
c.nombre as cnombre,
c.telefono as ctelefono,
c.dni as cdni,
c.apellidos as capellido
FROM reserva r INNER JOIN
cliente c
ON r.id_mainclient = c.id
ORDER BY rid DESC
我需要添加estancia
,它与reserva
具有n对1的关系。
我需要的可能是使用group_concat()
,这样我仍然可以获得id_clientes
中的所有estancia
,而不必复制行,而是将它们连接起来。
答案 0 :(得分:1)
您可以使用group by来使用group_concat
SELECT r.id as rid
, r.entrada as rentrada
, r.salida as rsalida
, c.nombre as cnombre
, c.telefono as ctelefono
, c.dni as cdni
, c.apellidos as capellido
, group_concat(e.id_cliente)
FROM reserva r
INNER JOIN cliente c on r.id_mainclient = c.id
INNER JOIN estancia e on r.id = e.id_reserva
GROUP BY r.id
ORDER BY rid DESC
或使用适当的分隔符并按
排序SELECT r.id as rid
, r.entrada as rentrada
, r.salida as rsalida
, c.nombre as cnombre
, c.telefono as ctelefono
, c.dni as cdni
, c.apellidos as capellido
, group_concat(e.id_cliente ORDER BY e.id_cliente ASC SEPARATOR ' ')
FROM reserva r
INNER JOIN cliente c on r.id_mainclient = c.id
INNER JOIN estancia e on r.id = e.id_reserva
GROUP BY r.id
ORDER BY rid DESC
或者如果您还需要c.dni
SELECT r.id as rid
, r.entrada as rentrada
, r.salida as rsalida
, c.nombre as cnombre
, c.telefono as ctelefono
, c.dni as cdni
, c.apellidos as capellido
, group_concat(e.id_cliente ORDER BY e.id_cliente ASC SEPARATOR ' ')
, group_concat(c.dni SEPARATOR ' ')
FROM reserva r
INNER JOIN cliente c on r.id_mainclient = c.id
INNER JOIN estancia e on r.id = e.id_reserva
GROUP BY r.id
ORDER BY rid DESC