¿Por qué me sale # 1060 - Duplicar nombre de la columna 'id'# 1060 - Duplicar nombre de la columna 'id'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
¿Por qué me sale # 1060 - Duplicar nombre de la columna 'id'# 1060 - Duplicar nombre de la columna 'id'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
Probablemente porque el * en select *
selecciona dos columnas con el mismo nombre de tip_usage
y tips
.
... y "cualquier columna en la lista de selección de subconsulta [debe tener] (http: // dev .mysql.com/doc/refman/5.7/es/from-clause-subqueries.html) nombres únicos. " –
Probablemente es porque la selección interna produce dos columnas con el nombre id
. Puesto que no se está utilizando esas columnas, sólo puede cambiar la selección para:
SELECT COUNT(*) FROM (SELECT t.id FROM `tips` `t`
LEFT JOIN tip_usage ON tip_usage.tip_id=t.id
GROUP BY t.id) sq
Su consulta es equivalente a esto:
SELECT COUNT(DISTINCT id)
FROM tips
, no hay necesidad de una unión.
¿Estás seguro de que no quieres un INNER JOIN
en su lugar?
¿Sabía que, dado que es una combinación IZQUIERDA, las filas en la tabla unida no influyen en el número de filas devueltas por COUNT (*)? Puede hacer 'SELECT COUNT (*) FROM tips' – Mchl
¡No! ¡Espera! ... hay un GRUPO POR ... pero ninguna función de agregación ... esta consulta simplemente no tiene sentido. – Mchl
¿Es 'id' una' PRIMARY KEY' en 'tips'? Si no tiene un registro de un consejo en 'tip_usage', ¿se debe contar este consejo? – Quassnoi