КОЛИЧЕСТВО y consulta compleja подставляет ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ. (sql)

Tengo las tablas comentario, usuario, спам.

La lógica de negocio, es que simple: ООН usuario puede realizar comentarios, y esto comentarios puede сер marcados спам Комо por otros usuarios.

Подросток La consulta que deseo realizar debe la siguiente estructura:

datos de comentarios / datos de usuario quien comentó / "usuario_spam" / spam_total

usuario_spam: СИ ПУСТОГО УКАЗАТЕЛЯ será эй не он marcado el comentario спам Комо, o ми сывороток "идентификатор" en caso contrario.

spam_total: La cantidad de veces que se ха marcado el comentario спам Комо.

La consulta SQL que he realizado es la siguiente:

SELECT 
   comentario.*,
   usuario.*,
   US.id AS usuario_spam, 
   COUNT(spam.id) AS spam_count

FROM comentario 

LEFT JOIN spam ON comentario.id = spam.id_comentario
INNER JOIN usuario ON comentario.id_usuario = usuario.id
LEFT JOIN usuario US ON US.id = spam.id_usuario = 123456 //ejemplo

WHERE
comentario.id_articulo = 11111 //ejemplo

GROUP BY comentario.id
ORDER BY comentario.fecha_creado DESC

Пещера Al parecer la consulta comentarios y сабля la cantidad de spam que tiene resulta, сенсилла, lo complicado es cuando trato de saber si el usuario que ingresa (123456) га marcado el comentario спам Комо.

Ejemplo:

-----Usuario--       comentario-      ------spam-------
|____ id ____|    | id__ id_usu.|   |_ id __|__ id_comentario_|__id_usu.._|
|____  1 ____|    | 1 __|  1 ___|   |_ 1 ___|_________1_______|__  3 _____|       
|____  2 ____|    | 2 __|  1 ___|   |_ 2 ___|_________1_______|__  2 _____|
|____  3 ____|    | 3 __|  2 ___|   
                  | 4 __|  2 ___|

Suponiendo que la consulta es realizado por el usuario de id = 1. Лос resultando serían:

|__ comentario ____|____ usuario ____| ______ usuario spam ___| total spam |
|______ 1 _________|_____   1   _____| ________ NULL _________|_____ 2 ____|
|______ 2 _________|_____   1  ______| ________ NULL _________|_____ 0 ____|
|______ 3 _________|_______ 2 _______| ________ NULL _________|______0_____|
|______ 4 _________|_______ 2 _______| ________ NULL _________|______0_____|

Suponiendo que la consulta es realizado por el usuario de id = 3. Лос resultando serían:

|__ comentario ____|____ usuario ____| ______ usuario spam ___| total spam |
|______ 1 _________|_____   1   _____| ________ 3    _________|_____ 2 ____|
|______ 2 _________|_____   1  ______| ________ NULL _________|_____ 0 ____|
|______ 3 _________|_______ 2 _______| ________ NULL _________|______0_____|
|______ 4 _________|_______ 2 _______| ________ NULL _________|______0_____|
2
задан 08.04.2017, 00:32
1 ответ

Ты можешь пробовать использовать один Distinct для selecionar не повторенные и потом считать их с Count

COUNT(DISTINCT(c.id)) AS spam_count
2
ответ дан 24.11.2019, 10:05