1. Anforderungen: Verkaufsversionskombinationen erhalten
Farbe (Attributname) + (schwarz, weiß...) Attributwertsatz
@Data
public static class ItemSaleAttrsVo{
private Long attrId;
private String attrName;
//当前属性有多少种版本:黑色,白色,蓝色,这里使用字符串拼接的方式所以没有使用集合存储
private String attrValues;
}
Zweitens: Gruppieren Sie nach Gruppierung
Warum erhalte ich eine Fehlermeldung, wenn ich häufig „Gruppieren nach“ verwende? Wenn die Gruppierung erfolgreich sein soll, müssen Sie sicherstellen, dass die Feldwerte der Abfrageergebnisse eine Eins-zu-Eins-Beziehung aufweisen.
(1) Vor dem Gruppieren stehen die Datensätze jedes Felds in einer Eins-zu-Eins-Entsprechung.
(2) Wählen Sie Feld A und Feld B aus XX aus, gruppieren Sie es nach Feld A,
wenn nur Feld A nach Gruppe gruppiert ist, wenn es nach Typ gruppiert ist , dann jeder Für jede Kategorie wird nur ein Datensatz angezeigt. Zu diesem Zeitpunkt wird eine Eins-zu-viele-Beziehung mit anderen nicht gruppierten Feldern gebildet. Dann kann
die Datenbank die Ergebnisse nicht anzeigen und es wird ein Fehler gemeldet .
(3) So lösen Sie das Eins-zu-Viele-Problem und nicht gruppierte Felder Es wird auch in einen Datensatz konvertiert, sodass eine Eins-zu-eins-Eindeutigkeit garantiert werden kann. Die Ergebnisse
der Abfrage können in zwei Kategorien unterteilt werden: Auswählen Die gruppierten Felder und die Felder, die nicht an der Gruppierung von xxx teilnehmen,
verwenden „Gruppe nach“, und die Felder, die nicht an der Gruppierung teilnehmen, müssen Aggregationsfunktionen (group_concat, count, avg, sum...) verwenden, um sie in einem Datensatz zusammenzufassen
3. Abfrageergebnisse
Mit der Aggregatfunktion „group_concat“ können mehrere Datensätze zusammengeführt werden
SELECT
b.attr_id,
b.attr_name,
GROUP_CONCAT(DISTINCT b.`attr_value`)
FROM `pms_sku_info` a LEFT JOIN `pms_sku_sale_attr_value` b ON a.sku_id = b.sku_id
WHERE a.spu_id = 28
GROUP BY b.attr_id,b.attr_name
eindeutig nach der Deduplizierung