2011-04-15 11 views
5

En un sitio web que he estado trabajando, los usuarios pueden enviar datos a una tabla, y cuando envían los datos, se les pide un nombre de socio, ya que dos personas trabajan en adquirir los datos. Estoy intentando crear una tabla de puntaje alto, enumerando las principales asociaciones, también la combinación (no permutación) del socio y el remitente que aparece con mayor frecuencia en la mesa.GRUPO Combinaciones de columnas, no permutaciones

El comando GROUP funciona muy bien para esto, pero he tocado un pequeño inconveniente con el problema de combinación/permutación. Actualmente, cuando los agrupo, solo comprueba las permutaciones de remitentes y socios, no combinaciones. El problema es que a menudo una asociación elige alternar entre una persona que es el remitente, y la otra es la pareja, por lo que tengo dos posibles permutaciones de GRUPOS que puedo obtener.

Actualmente tengo un código que extraerá una tabla de puntuación alta de las permutaciones de Submitter y Partner, y otra tabla de puntaje alto de las permutaciones de Partner y Submitter. Necesito unir estos resultados (posiblemente desagrupados y no ordenados) cuando partner = submitter o submitter = partner, y luego agruparlos y ordenarlos en orden descendente.

SELECT submitter, partner, COUNT(*) FROM submissions GROUP BY submitter, partner; 

El código anterior devolverá la mesa con los cargos de la permutación específica del remitente y su socio, pero si las mismas dos personas son pareja y presentador, acaba de cambiar, no se cuentan como el mismo grupo.

¿Alguien conoce el código para esto?

Respuesta

6

No es la solución más bonita, pero le proporcionará la respuesta que desea:

SELECT Person1, Person2, COUNT(*) FROM (
    SELECT 
     CASE WHEN submitter < partner THEN submitter ELSE partner END AS Person1, 
     CASE WHEN submitter >= partner THEN submitter ELSE partner END AS Person2 
    FROM submissions 
) Q 
GROUP BY Person1, Person2 
+0

Oh, es hermoso, y da la casualidad de que en forma mi PHP actual muy bien, gracias! – user709246

Cuestiones relacionadas