GROUP BY problem efter flytt till ny server

PHPportalen Forum Index » Databaser
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
snylften



Medlem i: 4546 dagar

Status: Offline



#741756
Inlägg Skrivet: 2017-06-13 12:57      Ämne: GROUP BY problem efter flytt till ny server Citera

Hallå
Jag har en tabell där jag stoppar in statistik.
Den innehåller ett date(dagens datum), customer_id, samt hits.
Varje rad innehåller X antal hits för en customer_id vid ett visst datum.

Nu har jag bytt till en annan server och mysql vill inte längre godta min SQL sats. Den anmärker på mitt GROUP BY. Felmeddelandet i loggen ser ut så här

#1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'c.company' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


KOD:
1:
SELECT
2:
c.reference,
3:
c.company,
4:
SUM(stp.hits)
5:
FROM stats_profile stp
6:
JOIN customers c ON stp.customer_id=c.reference
7:
WHERE (stp.date BETWEEN '2017-06-01' AND '2017-06-10') AND c.published=1
8:
GROUP BY stp.customer_id


Här är databasen med några rader:)

KOD:
1:
CREATE TABLE `stats_profile` (
2:
  `customer_id` int(11) NOT NULL,
3:
  `date` date NOT NULL,
4:
  `hits` mediumint(9) NOT NULL
5:
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
6:
 
7:
INSERT INTO `stats_profile` (`customer_id`, `date`, `hits`) VALUES
8:
(915279, '2017-06-08', 100),
9:
(915279, '2017-06-10', 112),
10:
(915279, '2017-06-12', 146),
11:
(915279, '2017-06-13', 103),
12:
(915280, '2017-05-18', 26),
13:
(915280, '2017-05-19', 19),
14:
(915280, '2017-05-21', 14),
15:
(915280, '2017-05-22', 16),
16:
(915280, '2017-05-25', 7),
17:
(915280, '2017-05-27', 12),
18:
(915280, '2017-05-28', 13),
19:
(915280, '2017-06-05', 15),
20:
(915280, '2017-06-06', 111),
21:
(915280, '2017-06-07', 136),
22:
(915280, '2017-06-08', 102),
23:
(915280, '2017-06-09', 9),
24:
(915280, '2017-06-10', 101),
25:
(915280, '2017-06-11', 1),
26:
(915280, '2017-06-12', 138),
27:
(915280, '2017-06-13', 110),
28:
(915281, '2017-05-18', 23),
29:
(915281, '2017-05-19', 30),
30:
(915281, '2017-05-20', 20),
31:
(915281, '2017-05-22', 15),
32:
(915281, '2017-05-25', 18),
33:
(915281, '2017-05-27', 6),
34:
(915281, '2017-05-28', 10),
35:
(915281, '2017-05-30', 7),
36:
(915281, '2017-06-01', 8),
37:
(915281, '2017-06-05', 10),
38:
(915281, '2017-06-06', 154),
39:
(915281, '2017-06-07', 121),
40:
(915281, '2017-06-08', 91),
41:
(915281, '2017-06-09', 1),
42:
(915281, '2017-06-10', 115),
43:
(915281, '2017-06-11', 1),
44:
(915281, '2017-06-12', 136),
45:
(915281, '2017-06-13', 109),
46:
(915282, '2017-05-18', 84),
47:
(915282, '2017-05-19', 15),
48:
(915282, '2017-05-20', 8),
49:
(915282, '2017-05-22', 17),
50:
(915282, '2017-05-25', 7),
51:
(915282, '2017-05-27', 10),
52:
(915282, '2017-05-29', 13),
53:
(915282, '2017-05-30', 11),
54:
(915282, '2017-06-01', 9),
55:
(915282, '2017-06-03', 12),
56:
(915282, '2017-06-05', 14),
57:
(915282, '2017-06-06', 116),
58:
(915282, '2017-06-07', 102),
59:
(915282, '2017-06-08', 105),
60:
(915282, '2017-06-09', 5),
61:
(915282, '2017-06-10', 103),
62:
(915282, '2017-06-11', 1),
63:
(915282, '2017-06-12', 141),
64:
(915282, '2017-06-13', 113),
65:
(915283, '2017-05-20', 31),
66:
(915283, '2017-05-21', 14),
67:
(915283, '2017-05-22', 21),
68:
(915283, '2017-05-23', 77),
69:
(915283, '2017-05-24', 14),
70:
(915283, '2017-05-25', 12),
71:
(915283, '2017-05-26', 12),
72:
(915283, '2017-05-27', 7),
73:
(915283, '2017-05-30', 10),
74:
(915283, '2017-05-31', 11),
75:
(915283, '2017-06-04', 11),
76:
(915283, '2017-06-05', 7),
77:
(915283, '2017-06-06', 118),
78:
(915283, '2017-06-07', 121),
79:
(915283, '2017-06-08', 108),
80:
(915283, '2017-06-10', 104),
81:
(915283, '2017-06-11', 6),
82:
(915283, '2017-06-12', 141),
83:
(915283, '2017-06-13', 118),
84:
(915284, '2017-05-25', 21),
85:
(915284, '2017-05-29', 57),
86:
(915284, '2017-05-30', 17),
87:
(915284, '2017-06-01', 15),
88:
(915284, '2017-06-02', 15),
89:
(915284, '2017-06-03', 7),
90:
(915284, '2017-06-06', 124),
91:
(915284, '2017-06-07', 117),
92:
(915284, '2017-06-08', 104),
93:
(915284, '2017-06-10', 146),
94:
(915284, '2017-06-12', 143),
95:
(915284, '2017-06-13', 103),
96:
(915285, '2017-06-01', 24),
97:
(915285, '2017-06-05', 6),
98:
(915285, '2017-06-06', 104),
99:
(915285, '2017-06-07', 133),
100:
(915285, '2017-06-08', 92),
101:
(915285, '2017-06-09', 1),
102:
(915285, '2017-06-10', 110),
103:
(915285, '2017-06-12', 142),
104:
(915285, '2017-06-13', 103),
105:
(915286, '2017-06-01', 13),
106:
(915286, '2017-06-05', 13),
107:
(915286, '2017-06-06', 101),
108:
(915286, '2017-06-07', 155),
109:
(915286, '2017-06-08', 101),
110:
(915286, '2017-06-09', 1),
111:
(915286, '2017-06-10', 116),
112:
(915286, '2017-06-12', 147),
113:
(915286, '2017-06-13', 112),
114:
(915287, '2017-06-01', 12),
115:
(915287, '2017-06-02', 10),
116:
(915287, '2017-06-05', 11),
117:
(915287, '2017-06-06', 100),
118:
(915287, '2017-06-07', 130),
119:
(915287, '2017-06-08', 91),
120:
(915287, '2017-06-09', 1),
121:
(915287, '2017-06-10', 120),
122:
(915287, '2017-06-11', 12),
123:
(915287, '2017-06-12', 146),
124:
(915287, '2017-06-13', 103),
125:
(915288, '2017-06-01', 21),
126:
(915288, '2017-06-04', 11),
127:
(915288, '2017-06-05', 6),
128:
(915288, '2017-06-06', 111),
129:
(915288, '2017-06-07', 108),
130:
(915288, '2017-06-08', 90),
131:
(915288, '2017-06-09', 4),
132:
(915288, '2017-06-10', 116),
133:
(915288, '2017-06-11', 1),
134:
(915288, '2017-06-12', 145),
135:
(915288, '2017-06-13', 115),
136:
(915289, '2017-06-01', 19),
137:
(915289, '2017-06-02', 13),
138:
(915289, '2017-06-04', 14),
139:
(915289, '2017-06-05', 14),
140:
(915289, '2017-06-06', 105),
141:
(915289, '2017-06-07', 116),
142:
(915289, '2017-06-08', 91),
143:
(915289, '2017-06-09', 1),
144:
(915289, '2017-06-10', 113),
145:
(915289, '2017-06-12', 149),
146:
(915289, '2017-06-13', 107),
147:
(915290, '2017-06-02', 89),
148:
(915290, '2017-06-03', 10),
149:
(915290, '2017-06-04', 11),
150:
(915290, '2017-06-05', 14),
151:
(915290, '2017-06-06', 61),
152:
(915290, '2017-06-07', 99),
153:
(915290, '2017-06-08', 153),
154:
(915290, '2017-06-09', 12),
155:
(915290, '2017-06-10', 105),
156:
(915290, '2017-06-11', 1),
157:
(915290, '2017-06-12', 148),
158:
(915290, '2017-06-13', 104),
159:
(915291, '2017-06-08', 93),
160:
(915291, '2017-06-09', 9),
161:
(915291, '2017-06-10', 101),
162:
(915291, '2017-06-12', 140),
163:
(915291, '2017-06-13', 115),
164:
(915292, '2017-06-08', 6);
165:
 
166:
--
167:
-- Index för dumpade tabeller
168:
--
169:
 
170:
--
171:
-- Index för tabell `stats_profile`
172:
--
173:
ALTER TABLE `stats_profile`
174:
  ADD UNIQUE KEY `customer_id` (`customer_id`,`date`);
175:
 
176:
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
177:
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
178:
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
179:
 
180:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 5012 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#741757
Inlägg Skrivet: 2017-06-13 13:50      Ämne: Citera

Felmeddelandet var rätt bra ändå, innehöll mycket info av vad den tycker blir fel.
Det den säger att ju att du försöker gruppera på något du inte har valt med i din select sats.

Du skulle kunna testa att lägga till det du grupperar på i din select, eller gruppera på något som du du redan har där.
Sen om det ger dig det resultat du vill ha får du undersöka.
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
snylften



Medlem i: 4546 dagar

Status: Offline



#741758
Inlägg Skrivet: 2017-06-13 14:57      Ämne: Citera

ok...
Jag har testat att lägga till stp.customer_id i min select men jag får samma felmeddelande. Jag har även testat att gruppera på c.reference istället för stp.customer_id men felmeddelandet kvarstår.

KOD:
1:
SELECT
2:
c.reference,
3:
c.company,
4:
 
5:
stp.customer_id,
6:
 
7:
SUM(stp.hits)
8:
FROM stats_profile stp
9:
JOIN customers c ON stp.customer_id=c.reference
10:
WHERE (stp.date BETWEEN '2017-06-01' AND '2017-06-10') AND c.published=1
11:
GROUP BY stp.customer_id



KOD:
1:
SELECT
2:
c.reference,
3:
c.company,
4:
SUM(stp.hits)
5:
FROM stats_profile stp
6:
JOIN customers c ON stp.customer_id=c.reference
7:
WHERE (stp.date BETWEEN '2017-06-01' AND '2017-06-10') AND c.published=1
8:
GROUP BY c.reference
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4752 dagar
Från: Tavesta
Status: Offline



#741760
Inlägget är accepterad som det rätta svaret Skrivet: 2017-06-13 23:30      Ämne: Citera

Om jag förstått din kod rätt så beror felmeddelandet på att c.company inte är ett ensamt värde, utan en array med värden. (Det kan mycket väl vara en array med bara ett enda värde i, men det beror på datat i tabellen.)

Testa att ändra till
KOD:
1:
SELECT
2:
c.reference,
3:
GROUP_CONCAT(DISTINCT  c.company),
4:
SUM(stp.hits)
5:
...


Eftersom du grupperat utifrån fältet stp.customer_id så är det bara det fältet som är ett ensamt värde.
Eftersom c.reference är samma som stp.customer_id så kan även det användas som ett ensamt värde i select-satsen. Men för alla andra fält måste du använda olika sammanställningsfunktioner (COUNT, SUM, MAX, VARIANCE osv.) för att kunna läsa av värdena.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
snylften



Medlem i: 4546 dagar

Status: Offline



#741762
Inlägg Skrivet: 2017-06-14 07:21      Ämne: Citera

Det löstet sig när jag grupperade på fler kolumner. Jag ändrade till
GROUP BY stp.customer_id,c.reference,c.company
Då funkade det.
Tack för hjälpen
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Databaser
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic