Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 01.06.2008, 22:36   #1
TP-Junior
 
Registriert seit: Apr 2008
MichiZH macht alles soweit korrekt

SQL, spinnt mein Group By?


Hi

Ich baue sone kleine Intranet-Buchhaltungs Anwendung (ähnlich wie Quicken). Nun möchte ich eine Übersichtsseite, welche mir pro Ausgabenkategorie die Ausgaben angibt. Dabei soll immer alles schön in ein Kästchen pro Konto gepackt werden. Also über einem Kästchen steht dann "Ausgaben für Konto Deutsche Bank: " mit dem Total für alle Ausgaben, für eine bestimmte Kategorie, welche von diesem Konto getätigt wurden. Im Kästchen selber stehen dann die einzelnen Transaktionen. Mit dem Teil im Kästchen habe ich kein Problem, lediglich mit der Titelzeile, welche das Total für alle Transaktionen anzeigen soll. (Dabei sind die Kategorien soweit maximal zweistufig, das heisst es gibt eine Hauptkategorie und n Unterkategorien, aber nur eine Ebene. Die eigene Kategorien ID ist CategoryID, und falls die Kategorie Unterkategorie ist, ist der ParentID Wert != 0).

Dies gibt mir immer 0 Datensätze zurück, keine Ahnung wieso:
Code:
SELECT SUM( t.Amount ) AS t_amount, a.AccountID, a.AccountName AS a_name, c.ParentID, a.UserID, c.CategoryID
FROM Transactions AS t
LEFT JOIN Categories AS c ON t.CategoryID = c.CategoryID
LEFT JOIN Accounts AS a ON t.AccountID = a.AccountID
GROUP BY t.accountid
HAVING c.categoryid =34
OR c.parentid =34
Wenn ich das ganze so eingebe:
Code:
SELECT SUM( t.Amount ) AS t_amount, a.AccountID, a.AccountName AS a_name, c.ParentID, a.UserID, c.CategoryID
FROM Transactions AS t
LEFT JOIN Categories AS c ON t.CategoryID = c.CategoryID
LEFT JOIN Accounts AS a ON t.AccountID = a.AccountID
GROUP BY t.accountid
HAVING c.categoryid =34
OR c.parentid =34
erhalte ich dieses Resultat:
HTML-Code:
t_amount, AccountID, a_name, ParentID, UserID, CategoryID
100	1	Academica	        0	1	34
100	3	Master Card	0	1	34
-27.5	3	Master Card	34	1	35
100	4	Visa	                34	1	35
Wieso klappt aber das erste (meiner Meinung nach richtige) Statement nicht?
MichiZH ist offline   Mit Zitat antworten


Alt 01.06.2008, 23:43   #2
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
1. SQL ist in mySQL case-sensitive (GROUP BY t.accountid)
2. Alle Ausdrücke in GROUP müssen auch im SELECT vorkommen

so hast Du im Select a.accountID, gruppierst aber nach t.accountid
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 02.06.2008, 08:04   #3
TP-Junior
 
Registriert seit: Apr 2008
MichiZH macht alles soweit korrekt
Beide Punkte jetzt beachtet, aber das Resultat ist dasselbe
MichiZH ist offline   Mit Zitat antworten
Alt 02.06.2008, 10:04   #4
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
die beiden Queries sind 100prozentig identisch - ehrlich gesagt kann ich dir da nicht ganz folgen

@Steffen: in MySQL ist groß/kleinschreibung m.E. egal... Ebenso ist MySQL eines der wenigen System, die im GroupBy nicht alle Felder aus dem Select voraussetzten.
Stuck Mojo ist offline   Mit Zitat antworten
Alt 02.06.2008, 10:09   #5
TP-Junior
 
Registriert seit: Apr 2008
MichiZH macht alles soweit korrekt
Sorry mein Fehler:

Das eine Query (das eben diesen Output generierte), hat als GroupBy:

c.CategoryID, t.AccountID
MichiZH ist offline   Mit Zitat antworten
Alt 02.06.2008, 13:17   #6
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Hi Jan,

das mit der Gross/Kleinschreibung hab ich erst kürzlich festgestellt, hier funktionierten Feldzuweisungen nicht wegen falscher Schreibweise, vll ist das neu in Version 5?
http://dev.mysql.com/doc/refman/5.0/...nsitivity.html

Zum GroupBy hatte ich schon öfters Fehlermeldung, wenn das nicht im Select vorkommt, habe nichts eindeutiges in der Doku finden können (alle Beispiele erfüllen das aber)
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 03.06.2008, 12:19   #7
TP-Junior
 
Registriert seit: Apr 2008
MichiZH macht alles soweit korrekt
Weiss da niemand ne Lösung? Ich komm echt nicht weiter! Das komische ist: Wenn ich das ganze Statement, das Probleme macht so schreibe:
Code:
SELECT t.Amount AS t_amount, a.AccountID, a.AccountName AS a_name, c.ParentID, a.UserID, c.CategoryID
FROM Transactions AS t
INNER JOIN Categories AS c ON t.CategoryID = c.CategoryID
INNER JOIN Accounts AS a ON t.AccountID = a.AccountID
INNER JOIN AccountType AS at ON a.AccountTypeID = at.AccountTypeID
WHERE a.UserID =1
AND (
c.CategoryID =35
OR c.ParentID =35
)
ORDER BY at.Position
LIMIT 0 , 30
gibt es folgenden Output:

HTML-Code:
t_amount	AccountID	a_name	ParentID	UserID	CategoryID
-27	3	Master Card	34	1	35
100	4	Visa	                34	1	35
So:

Code:
SELECT SUM( t.Amount ) AS t_amount, a.AccountID, a.AccountName AS a_name, c.ParentID, a.UserID, c.CategoryID
FROM Transactions AS t
INNER JOIN Categories AS c ON t.CategoryID = c.CategoryID
INNER JOIN Accounts AS a ON t.AccountID = a.AccountID
INNER JOIN AccountType AS at ON a.AccountTypeID = at.AccountTypeID
GROUP BY a.AccountID
HAVING a.UserID =1
AND (
c.CategoryID =35
OR c.ParentID =35
)
ORDER BY at.Position
LIMIT 0 , 30
gibt es aber nix! Wieso?!?
MichiZH ist offline   Mit Zitat antworten
Alt 03.06.2008, 12:48   #8
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
OR c.ParentID =34 ?

In solchen Fällen nehm ich der Reihe nach Ausdrücke weg um die Ursache zu finden.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 03.06.2008, 12:50   #9
TP-Junior
 
Registriert seit: Apr 2008
MichiZH macht alles soweit korrekt
Ne das mit der parentid stimmt so. ja hab ich auch, es gibt erst probleme ab dem das group by dabei ist, vorher nicht!
MichiZH ist offline   Mit Zitat antworten
Alt 03.06.2008, 23:38   #10
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
hast Du mal statt HAVING WHERE probiert?
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 04.06.2008, 06:14   #11
TP-Junior
 
Registriert seit: Apr 2008
MichiZH macht alles soweit korrekt
ja mit where geht gar nichts. das komische ist, dass es nur bei categoryid=34 und 35 nicht funzt. wieso weiss ich aber nicht, bei den anderen gehts.
MichiZH ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
SQL, spinnt mein Group By? SQL, spinnt mein Group By?
« Formular Fertig, wie übertrage ich nun auf ein Script | Hilfe gesucht! Bei Php login und Mysql »

Stichworte
datenbank, mysql

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:47 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67