Tengo las siguientes consultas.
SELECT DISTINCT goid, backid FROM trip WHERE userID = ? SELECT goid, count(goid) FROM trip WHERE userID = ? GROUP by goid SELECT backid , count(backid ) FROM trip WHERE userID = ? GROUP by backidMe pregunto si hay alguna forma de fusionar las 3 consultas, o al menos las últimas 2 consultas en 1. Además, si solo se pueden fusionar las últimas 2, ¿cómo puedo agregar esencialmente los resultados de la columna 2 a 1, por ejemplo, 1011? => 20 como columna backid y goid pueden tener el mismo id y, en este caso, se debe agregar el recuento
La imagen muestra el resultado de ejemplo de la segunda consulta. La tercera consulta es exactamente igual pero de una columna diferente.
Ejemplo mínimo:
create table trip ( goid varchar(255), backid varchar(255) ); insert into trip (goid, backid) values ('EGLL', 'EGLL'); insert into trip (goid, backid) values ('VABB', 'VABB'); insert into trip (goid, backid) values ('KSEE', 'BHAS'); insert into trip (goid, backid) values ('EGNM', 'YSSY'); insert into trip (goid, backid) values ('OBMD', 'KSBD'); insert into trip (goid, backid) values ('EGLL', 'VABB'); SELECT goid, count(goid) FROM trip GROUP by goid; SELECT backid , count(backid ) FROM trip GROUP by backid; SELECT DISTINCT goid, backid FROM tripEn el ejemplo, eliminé el ID de usuario porque no es relevante. Pero el objetivo principal es que las consultas de selección 1 y 2 del ejemplo se fusionen en una y la salida 2 se fusione, es decir, si EGLL está en goid y backid, entonces son esencialmente 1 clave y el recuento se suma. En general, las consultas de recuento de 2 deben verse similares a la imagen combinada
Use UNION ALL para combinar goid s y backid s y luego agregue:
SELECT id, COUNT(*) FROM ( SELECT goid AS id FROM trip UNION ALL SELECT backid FROM trip ) t GROUP BY id; Ver la demostración .