Contar partidos entre dos mesas

Tengo una tabla de palabras y una tabla de frases. Me gustaría contar cuántas frases contiene cada palabra.

Esta consulta me da una lista de (palabra, frase) pares; como saco el conteo ¿Hay una manera más eficiente de hacerlo?

seleccionar palabras.palabra, frases.frase

de palabras izquierda unir frases

en frases.frase rlike concat('(^|[^az])', palabras.palabra, '($|[^az])');

preguntado el 27 de julio de 12 a las 16:07

1 Respuestas

Usando su consulta existente, puede agregar una GROUP BY cláusula y una COUNT:

SELECT
    words.word,
    COUNT(phrases.phrase) as Count
FROM
    words
    LEFT JOIN phrases
        ON phrases.phrase RLIKE CONCAT('(^|[^a-z])', words.word, '($|[^a-z])')
GROUP BY
    words.word

Alternativamente, puede lograr esto con una subconsulta en lugar de una combinación:

SELECT
    words.word,
    (SELECT COUNT(*)
        FROM phrases
        WHERE phrase RLIKE CONCAT('(^|[^a-z])', words.word, '($|[^a-z])')
    ) AS Count
FROM words

Respondido 27 Jul 12, 16:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.