Supongamos que tengo una tabla con registros como [{fruta: manzana, color: verde, precio: 100}, {fruta: manzana, color: rojo, precio: 75}, {fruta: plátano, color: amarillo, precio: 50 }] .
¿Cuál sería el comando de secuencia si quisiera obtener frutas únicas, pero quiero obtener solo el campo de color junto con él, y solo quiero 1 ocurrencia de una fruta ... Entonces, para esta tabla, quiero que mi resultado sea [{fruta: manzana, color: verde},{fruta: plátano, color: amarillo}]
Esto es lo que probé:
fruitVendor.findAndCountAll({ attributes:[[Sequelize.fn('DISTINCT', Sequelize.col('fruit')),'FRUIT'],['colour','COLOUR']] })Pero obtuve [{fruta: manzana, color: verde}, {fruta: manzana, color: rojo}, {fruta: plátano, color: amarillo}]
Y luego eliminé el color como uno de los atributos solo para verificar si la distinción funcionaba bien:
fruitVendor.findAndCountAll({ attributes:[[Sequelize.fn('DISTINCT', Sequelize.col('fruit')),'FRUIT'] })Y obtuve [{fruta: manzana}, {fruta: plátano}]
Entonces, incluso si menciono distinto con un atributo específico, ¿lo aplicó también a los demás?
¿Alguien puede ayudarme a conseguir [{fruta: manzana, color: verde}, {fruta: plátano, color: amarillo}]
Así es como funciona SELECT DISTINCT con SQL. Evalúa todas las combinaciones de las columnas que eligió para seleccionar.
Si no lo hiciera de esta manera, ¿cómo sabría que querías {fruta: manzana, color: verde} en lugar de {fruta: manzana, color: rojo}?
Si estás de acuerdo con cualquier color, puedes probar esto.
fruitVendor.findAndCountAll({ attributes: [['fruit','FRUIT'], [Sequelize.fn('MIN', Sequelize.col('colour')), 'COLOUR']], // Or MAX group: 'fruit' })