MySQL-Bug bei SUM-Klausel?

MySQL-Bug bei SUM-Klausel?

am 30.06.2007 10:10:02 von helmut_nospam

Hallo,
ich habe ein SQL-Statement geschrieben mit folgenden Besonderheiten:
Es wird in der Haupttabelle eine Gruppierung und Summierung (SUM) gemacht,=
=20
daneben werden mit einem INNER JOIN Daten aus einer zweiten Tabelle=20
dazugelinkt.
Es kommt korrekterweise _ein_ Ergebnissatz zurück, jedoch die Summe ist d=
as=20
Ergebnis der Aufsummierung, multipliziert mit der Anzahl der dazugelinkten=
=20
Sätze!
Eine ebenfalls vorhandene Count-Klausel auf die Haupttabelle liefert den=20
korrekten Wert.
Ist das jetzt ein MySQL-Bug oder habe ich die SUM-Klausel nicht kapiert???

thanx for your help, Helmut

Re: MySQL-Bug bei SUM-Klausel?

am 30.06.2007 12:27:00 von Johannes Vogel

Hi Helmut

Helmut Blass wrote:
> Hallo,
> ich habe ein SQL-Statement geschrieben mit folgenden Besonderheiten:
> Es wird in der Haupttabelle eine Gruppierung und Summierung (SUM) gemacht,
> daneben werden mit einem INNER JOIN Daten aus einer zweiten Tabelle
> dazugelinkt.
> Es kommt korrekterweise _ein_ Ergebnissatz zurück, jedoch die Summe ist das
> Ergebnis der Aufsummierung, multipliziert mit der Anzahl der dazugelinkten
> Sätze!
> Eine ebenfalls vorhandene Count-Klausel auf die Haupttabelle liefert den
> korrekten Wert.
> Ist das jetzt ein MySQL-Bug oder habe ich die SUM-Klausel nicht kapiert???

Du hast nicht kapiert, was genau du machst. Und wir können das auch
nicht, weil du uns das Statement vorbehältst.

HTH, Johannes

Re: MySQL-Bug bei SUM-Klausel?

am 30.06.2007 12:44:12 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: MySQL-Bug bei SUM-Klausel?

am 30.06.2007 13:59:36 von helmut_nospam

In article <60172$46862fe5$50db7d3b$26421@news.hispeed.ch>, Johannes Vogel =
wrote:

>Du hast nicht kapiert, was genau du machst. Und wir können das auch=20
>nicht, weil du uns das Statement vorbehältst.
>
>HTH, Johannes

Sorry, ich dacht, die Infos wären ausführlich genug.
DAs SQL-Statement sieht etwa so aus:

Select t1.feld1, t1.feld2,Sum(t1.anzahl) As a_zahl,Count(Distinct(t1.artnr)=
)=20
as e_zahl,t2.lf_nr
INNER JOIN t2 ON t1.wenr=3Dt2.wenr
GROUP BY t1.feld1, t1.feld2,t2.lf_nr

In t2 gibt es drei verlinkte sätze, aber nur mit _einer_ lf_nr.
Im summenfeld a_zahl ist die tatsächliche Summe multipliziert mit drei.
Es gibt nur _einen_ Ergebnis-Satz. Das Count-Feld gibt den richtigen Wert a=
us!

Gruss, Helmut

Re: MySQL-Bug bei SUM-Klausel?

am 30.06.2007 18:10:53 von Johannes Vogel

Hi Helmut

Helmut Blass wrote:
> In article <60172$46862fe5$50db7d3b$26421@news.hispeed.ch>, Johannes Vogel wrote:
>> Du hast nicht kapiert, was genau du machst. Und wir können das auch
>> nicht, weil du uns das Statement vorbehältst.
> Sorry, ich dacht, die Infos wären ausführlich genug.
> DAs SQL-Statement sieht etwa so aus:
> Select t1.feld1, t1.feld2,Sum(t1.anzahl) As a_zahl,Count(Distinct(t1.artnr))
> as e_zahl,t2.lf_nr

hier fehlt `from t1`.

> INNER JOIN t2 ON t1.wenr=t2.wenr
> GROUP BY t1.feld1, t1.feld2,t2.lf_nr
> In t2 gibt es drei verlinkte sätze, aber nur mit _einer_ lf_nr.
> Im summenfeld a_zahl ist die tatsächliche Summe multipliziert mit drei.
> Es gibt nur _einen_ Ergebnis-Satz. Das Count-Feld gibt den richtigen Wert aus!

Jetzt hast du also gemerkt, dass dieses Statement nicht macht, was du
wolltest. Also gehen wir mal debuggen:

select * from t1 inner join t2 using (wenr)

Und dann

select * from t1 inner join t2 using (wenr)
group by t1.feld1, t1.feld2, t2.lf_nr

Spätestens jetzt, müsstest du verstehen, was genau da passiert.
Und falls du nicht drauf kommen solltest: Andreas hat das Schlüsselwort
bereits genannt. ;-)

HTH, Johannes

Re: MySQL-Bug bei SUM-Klausel?

am 30.06.2007 20:29:28 von helmut_nospam

In article <4cfd8$4686807e$50db7d3b$5985@news.hispeed.ch>, Johannes Vogel <=
newsgroups@jvogel.ch> wrote:
>Hi Helmut
>
>Helmut Blass wrote:
>> In article <60172$46862fe5$50db7d3b$26421@news.hispeed.ch>, Johannes Vog=
el
> wrote:
>>> Du hast nicht kapiert, was genau du machst. Und wir können das auch=20
>>> nicht, weil du uns das Statement vorbehältst.
>> Sorry, ich dacht, die Infos wären ausführlich genug.
>> DAs SQL-Statement sieht etwa so aus:
>> Select t1.feld1, t1.feld2,Sum(t1.anzahl) As a_zahl,Count(Distinct(t1.art=
nr))=20
>> as e_zahl,t2.lf_nr
>
>hier fehlt `from t1`.

sorry, das habe ich nur *hier* in der Eile vergessen. Ist natürlich drin.=
...
>
>> INNER JOIN t2 ON t1.wenr=3Dt2.wenr
>> GROUP BY t1.feld1, t1.feld2,t2.lf_nr
>> In t2 gibt es drei verlinkte sätze, aber nur mit _einer_ lf_nr.
>> Im summenfeld a_zahl ist die tatsächliche Summe multipliziert mit drei.
>> Es gibt nur _einen_ Ergebnis-Satz. Das Count-Feld gibt den richtigen Wert
> aus!
>
>Jetzt hast du also gemerkt, dass dieses Statement nicht macht, was du=20
>wolltest. Also gehen wir mal debuggen:
>
>select * from t1 inner join t2 using (wenr)
>
>Und dann
>
>select * from t1 inner join t2 using (wenr)
> group by t1.feld1, t1.feld2, t2.lf_nr
>
>Spätestens jetzt, müsstest du verstehen, was genau da passiert.
>Und falls du nicht drauf kommen solltest: Andreas hat das Schlüsselwort=
=20
>bereits genannt. ;-)

und wie komme ich auf die richtige Summe?
>
>HTH, Johannes

Re: MySQL-Bug bei SUM-Klausel?

am 01.07.2007 16:22:45 von Johannes Vogel

Hi Helmut

Helmut Blass wrote:
> In article <4cfd8$4686807e$50db7d3b$5985@news.hispeed.ch>, Johannes Vogel wrote:
>> select * from t1 inner join t2 using (wenr)
>> group by t1.feld1, t1.feld2, t2.lf_nr
>> Spätestens jetzt, müsstest du verstehen, was genau da passiert.
>> Und falls du nicht drauf kommen solltest: Andreas hat das Schlüsselwort
>> bereits genannt. ;-)
> und wie komme ich auf die richtige Summe?

Zwei Statements absetzen - so einfach ist das.
HTH, Johannes