Hallo Mark,
stimmt, ein raffiniertes Problem auf Grundlage einer falsche Verwendung von GROUP BY, die MySQL abhängig vom eingestellten SQL_MODE zuläßt und damit "falsche" Ergebnisse erzeugt.
ONLY_FULL_GROUP_BY
Erlaubt keine Abfragen, bei denen die GROUP BY-Klausel auf eine Spalte verweist, die in der Ausgabespaltenliste nicht vorhanden ist.
http://dev.mysql.com/doc/refman/5.1/de/server-sql-mode.html
prüfen und setzen des SQL-Mode in der SESSION
mysql> SELECT @@session.sql_mode;
+--------------------+
| @@session.sql_mode |
+--------------------+
| |
+--------------------+
1 row in set (0.00 sec)
mysql> SET @@session.sql_mode=ONLY_FULL_GROUP_BY
-> ;
Query OK, 0 rows affected (0.03 sec)
mysql>
und siehe da, MySQL meckert nun den SQL an
mysql> SELECT items.brand, (
->
-> SELECT SUM( its.PhysicalStock )
-> FROM items_stock AS its
-> WHERE its.itemId = items.itemId
-> ) AS stockValue
-> FROM items
-> WHERE items.id_gender = '1'
-> GROUP BY items.brand ;
ERROR 1055 (42000): 'rsslounge.items.itemId' isn't in GROUP BY
mysql>
Lösung... ein weiterer SUM() ist notwendig.
-------------------------------------------
SELECT items.brand, SUM(
(SELECT SUM( its.PhysicalStock )
FROM items_stock AS its
WHERE its.itemId = items.itemId
)
) AS stockValue
FROM items
WHERE items.id_gender = '1'
GROUP BY items.brand ;
+-------+------------+
| brand | stockValue |
+-------+------------+
| Suit | 50 |
| Test | 34 |
+-------+------------+
2 rows in set (0.00 sec)
Grüße
Thomas