我有一个带有子查询的mySQL查询。 这个子查询:
(SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia AND e.id=1)
返回两个值,但查询:
SELECT nombre
FROM tblRegistration
WHERE tlf= ALL(
SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia
AND e.id=1)
返回一个值。
这两个值是重复的,但我想在第二个查询中显示它们
答案 0 :(得分:2)
使用联接操作
SELECT t.nombre
FROM tblRegistration t
JOIN ( SELECT r.tlf_reserva
FROM eventos e
CROSS
JOIN Reservas r
JOIN viajes v
ON v.id_propia = r.id_viaje
WHERE e.id=1
) v
ON t.tlf = v.tlf_reserva
最佳做法是限定所有列引用,并将连接谓词放在ON子句而不是WHERE中。
答案 1 :(得分:1)
我找到了解决方案,这里是正确的查询:
SELECT nombre FROM tblRegistration a INNER JOIN(SELECT r.tlf_reserva FROM eventos e INNER JOIN Reservas r INNER JOIN viajes v WHERE r.id_viaje=v.id_propia AND e.id=1) b where a.tlf=b.tlf_reserva
答案 2 :(得分:0)
不,因为两个值相同(重复)并且您选择单个字段;只显示一次。如果你仍然强烈想要展示,你可以使用UNION ALL
之类的
SELECT nombre
FROM tblRegistration
WHERE tlf = ALL(SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia
AND e.id=1)
UNION ALL
SELECT nombre
FROM tblRegistration
WHERE tlf = ALL(SELECT r.tlf_reserva
FROM eventos e
INNER JOIN Reservas r
INNER JOIN viajes v
WHERE r.id_viaje=v.id_propia
AND e.id=1)