Query will nicht mehr

Query will nicht mehr

am 23.07.2007 10:59:41 von Michael Kuroll

Hallo dcdm!

Folgende Tabellenstruktur:

CREATE TABLE `gameplayer` (
`gameplayer_id` int(11) NOT NULL auto_increment,
`gameplayer_gamesid` int(11) NOT NULL default '0',
`gameplayer_userid` int(11) NOT NULL default '0',
`gameplayer_einsatz` decimal(11,0) NOT NULL default '0',
`gameplayer_gewinn` decimal(11,0) NOT NULL default '0',
`gameplayer_rang` int(5) NOT NULL default '0',
PRIMARY KEY (`gameplayer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin

Mit Hilfe dieser Newsgroup bzw. deren Leser/Schreiber habe ich folgenden
Query im Einsatz:

SELECT gp.gameplayer_userid,
count(gp.gameplayer_id) AS anz,
user_vorname,
user_nachname
FROM gameplayer gp, user
LEFT JOIN gameplayer nex
ON gp.gameplayer_gamesid = nex.gameplayer_gamesid
AND gp.gameplayer_rang < nex.gameplayer_rang
AND nex.gameplayer_gewinn = 0
WHERE nex.gameplayer_id IS NULL AND user_id =
gp.gameplayer_userid
GROUP BY gp.gameplayer_userid
ORDER BY anz DESC, user_nachname

Dieser hat seinen Dienst auch immer getan. Seit dem Update auf MySQL
Version 5.0.32 will er aber nicht mehr.

Die Fehlermeldung ist für mich nicht nachvollziehbar:

#1054 - Unknown column 'gp.gameplayer_gamesid' in 'on clause'

Kann mir bitte jemand erklären wo genau das Problem liegt?

Vielen Dank, lg
Mike

Re: Query will nicht mehr

am 23.07.2007 11:51:33 von Gregor Kofler

Michael Kuroll meinte:
> Hallo dcdm!
>
> Folgende Tabellenstruktur:
>
> CREATE TABLE `gameplayer` (
> `gameplayer_id` int(11) NOT NULL auto_increment,
> `gameplayer_gamesid` int(11) NOT NULL default '0',
> `gameplayer_userid` int(11) NOT NULL default '0',
> `gameplayer_einsatz` decimal(11,0) NOT NULL default '0',
> `gameplayer_gewinn` decimal(11,0) NOT NULL default '0',
> `gameplayer_rang` int(5) NOT NULL default '0',
> PRIMARY KEY (`gameplayer_id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin
>
> Mit Hilfe dieser Newsgroup bzw. deren Leser/Schreiber habe ich folgenden
> Query im Einsatz:
>
> SELECT gp.gameplayer_userid,
> count(gp.gameplayer_id) AS anz,
> user_vorname,
> user_nachname
> FROM gameplayer gp, user
> LEFT JOIN gameplayer nex
> ON gp.gameplayer_gamesid = nex.gameplayer_gamesid
> AND gp.gameplayer_rang < nex.gameplayer_rang
> AND nex.gameplayer_gewinn = 0
> WHERE nex.gameplayer_id IS NULL AND user_id =
> gp.gameplayer_userid
> GROUP BY gp.gameplayer_userid
> ORDER BY anz DESC, user_nachname
>
> Dieser hat seinen Dienst auch immer getan. Seit dem Update auf MySQL
> Version 5.0.32 will er aber nicht mehr.
>
> Die Fehlermeldung ist für mich nicht nachvollziehbar:
>
> #1054 - Unknown column 'gp.gameplayer_gamesid' in 'on clause'
>
> Kann mir bitte jemand erklären wo genau das Problem liegt?

Du joinst an die "user"-Tabelle?

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Query will nicht mehr

am 23.07.2007 12:00:44 von Michael Kuroll

Am Mon, 23 Jul 2007 11:51:33 +0200 schrieb Gregor Kofler:

> Michael Kuroll meinte:
>> Hallo dcdm!
>>
>> Folgende Tabellenstruktur:
>>
>> CREATE TABLE `gameplayer` (
>> `gameplayer_id` int(11) NOT NULL auto_increment,
>> `gameplayer_gamesid` int(11) NOT NULL default '0',
>> `gameplayer_userid` int(11) NOT NULL default '0',
>> `gameplayer_einsatz` decimal(11,0) NOT NULL default '0',
>> `gameplayer_gewinn` decimal(11,0) NOT NULL default '0',
>> `gameplayer_rang` int(5) NOT NULL default '0',
>> PRIMARY KEY (`gameplayer_id`)
>> ) ENGINE=MyISAM DEFAULT CHARSET=latin
>>
>> Mit Hilfe dieser Newsgroup bzw. deren Leser/Schreiber habe ich folgenden
>> Query im Einsatz:
>>
>> SELECT gp.gameplayer_userid,
>> count(gp.gameplayer_id) AS anz,
>> user_vorname,
>> user_nachname
>> FROM gameplayer gp, user
>> LEFT JOIN gameplayer nex
>> ON gp.gameplayer_gamesid = nex.gameplayer_gamesid
>> AND gp.gameplayer_rang < nex.gameplayer_rang
>> AND nex.gameplayer_gewinn = 0
>> WHERE nex.gameplayer_id IS NULL AND user_id =
>> gp.gameplayer_userid
>> GROUP BY gp.gameplayer_userid
>> ORDER BY anz DESC, user_nachname
>>
>> Dieser hat seinen Dienst auch immer getan. Seit dem Update auf MySQL
>> Version 5.0.32 will er aber nicht mehr.
>>
>> Die Fehlermeldung ist für mich nicht nachvollziehbar:
>>
>> #1054 - Unknown column 'gp.gameplayer_gamesid' in 'on clause'
>>
>> Kann mir bitte jemand erklären wo genau das Problem liegt?
>
> Du joinst an die "user"-Tabelle?
>
> Gregor

nein!
an die gameplayer tabelle.

siehe: 103t094etivp5.1o1b6d8ajdwyx$.dlg@40tude.net und die zugehörigen
Antworten.

danke, lg
Mike

Re: Query will nicht mehr

am 23.07.2007 12:03:29 von Christian Kirsch

Am 23.07.2007 10:59 schrieb Michael Kuroll:
> Hallo dcdm!
>
> Folgende Tabellenstruktur:
>
> CREATE TABLE `gameplayer` (
> `gameplayer_id` int(11) NOT NULL auto_increment,
> `gameplayer_gamesid` int(11) NOT NULL default '0',
> `gameplayer_userid` int(11) NOT NULL default '0',
> `gameplayer_einsatz` decimal(11,0) NOT NULL default '0',
> `gameplayer_gewinn` decimal(11,0) NOT NULL default '0',
> `gameplayer_rang` int(5) NOT NULL default '0',
> PRIMARY KEY (`gameplayer_id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin
>
> Mit Hilfe dieser Newsgroup bzw. deren Leser/Schreiber habe ich folgenden
> Query im Einsatz:
>
> SELECT gp.gameplayer_userid,
> count(gp.gameplayer_id) AS anz,
> user_vorname,
> user_nachname
> FROM gameplayer gp, user
> LEFT JOIN gameplayer nex
> ON gp.gameplayer_gamesid = nex.gameplayer_gamesid
> AND gp.gameplayer_rang < nex.gameplayer_rang
> AND nex.gameplayer_gewinn = 0
> WHERE nex.gameplayer_id IS NULL AND user_id =
> gp.gameplayer_userid
> GROUP BY gp.gameplayer_userid
> ORDER BY anz DESC, user_nachname
>
> Dieser hat seinen Dienst auch immer getan. Seit dem Update auf MySQL
> Version 5.0.32 will er aber nicht mehr.
>
> Die Fehlermeldung ist für mich nicht nachvollziehbar:
>
> #1054 - Unknown column 'gp.gameplayer_gamesid' in 'on clause'
>
> Kann mir bitte jemand erklären wo genau das Problem liegt?
>

Komma und explizites JOIN in einer Abfrage geht seit einiger Zeit
schief, IIRC. Das wurde in dieser Gruppe schon öfter behandelt.



--
Christian

Re: Query will nicht mehr

am 23.07.2007 12:18:09 von Claus Reibenstein

Michael Kuroll schrieb:

> FROM gameplayer gp, user
> LEFT JOIN gameplayer nex
> ON gp.gameplayer_gamesid = nex.gameplayer_gamesid

FROM user, gameplayer gp LEFT JOIN gameplayer nex ON ...

Gruß. Claus

Re: Query will nicht mehr

am 23.07.2007 12:18:10 von Axel Schwenke

Michael Kuroll wrote:
>
> SELECT gp.gameplayer_userid,
> count(gp.gameplayer_id) AS anz,
> user_vorname,
> user_nachname
> FROM gameplayer gp, user
> LEFT JOIN gameplayer nex
> ON gp.gameplayer_gamesid = nex.gameplayer_gamesid
> AND gp.gameplayer_rang < nex.gameplayer_rang
> AND nex.gameplayer_gewinn = 0
> WHERE nex.gameplayer_id IS NULL AND user_id =
> gp.gameplayer_userid
> GROUP BY gp.gameplayer_userid
> ORDER BY anz DESC, user_nachname
>
> Dieser hat seinen Dienst auch immer getan. Seit dem Update auf MySQL
> Version 5.0.32 will er aber nicht mehr.

das ist (war) eine VFAQ



....
Incompatible change: Beginning with MySQL 5.0.12, natural joins and
joins with USING, including outer join variants, are processed
according to the SQL:2003 standard. The changes include elimination of
redundant output columns for NATURAL joins and joins specified with a
USING clause and proper ordering of output columns. The precedence of
^^^^^^^^^^^^^^^^^
the comma operator also now is lower compared to JOIN, LEFT JOIN, and
^^^^^^^^^^^^^^^^^^
so forth.

These changes make MySQL more compliant with standard SQL. However,
they can result in different output columns for some joins. Also, some
queries that appeared to work correctly prior to 5.0.12 must be
rewritten to comply with the standard. For details about the scope of
the changes and examples that show what query rewrites are necessary,
see Section 13.2.7.1, "JOIN Syntax".
....

PS: und jetzt darfst du einmal raten, warum MySQL so schicke Dokumente
wie dieses zusammenstellt.


XL

Re: Query will nicht mehr

am 23.07.2007 12:19:00 von Michael Kuroll

Am Mon, 23 Jul 2007 12:03:29 +0200 schrieb Christian Kirsch:

Hallo Christian!

Danke für Deine rasche Antwort.

>> #1054 - Unknown column 'gp.gameplayer_gamesid' in 'on clause'
>> Kann mir bitte jemand erklären wo genau das Problem liegt?

> Komma und explizites JOIN in einer Abfrage geht seit einiger Zeit
> schief, IIRC. Das wurde in dieser Gruppe schon öfter behandelt.

Ich hab jetzt ein wenig gegoogelt und hab herausgefunden, dass das an der
Rangordnung liegt. Desweitere hab ich gelesen, das man das mit einem Inner
Join lösen kann.
Ich hab jetzt auch auf die User Tabelle gejoint - allerdings bin ich mir
nicht 100%ig sicher ob das so stimmt?!?

SELECT gp.gameplayer_userid,
count(gp.gameplayer_id) AS anz,
user_vorname,
user_nachname
FROM gameplayer gp
JOIN user
LEFT JOIN gameplayer nex
ON gp.gameplayer_gamesid = nex.gameplayer_gamesid
AND gp.gameplayer_rang < nex.gameplayer_rang
AND nex.gameplayer_gewinn = 0
WHERE nex.gameplayer_id IS NULL AND user_id =
gp.gameplayer_userid
GROUP BY gp.gameplayer_userid
ORDER BY anz DESC, user_nachname

Danke, lg
Mike

Re: Query will nicht mehr

am 23.07.2007 12:41:32 von Michael Kuroll

Am Mon, 23 Jul 2007 12:18:09 +0200 schrieb Claus Reibenstein:

>> FROM gameplayer gp, user
>> LEFT JOIN gameplayer nex
>> ON gp.gameplayer_gamesid = nex.gameplayer_gamesid

> FROM user, gameplayer gp LEFT JOIN gameplayer nex ON ...

Vielen Dank, das hat geholfen. (obwohl so einfach...)

Re: Query will nicht mehr

am 23.07.2007 12:46:45 von Gregor Kofler

Michael Kuroll meinte:

>>> Kann mir bitte jemand erklären wo genau das Problem liegt?
>> Du joinst an die "user"-Tabelle?
>>
>> Gregor
>
> nein!
> an die gameplayer tabelle.

Deine Query machte das aber. Mittlerweile hast du ja Lösungsvorschläge.

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Query will nicht mehr

am 23.07.2007 12:54:46 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Query will nicht mehr

am 23.07.2007 18:09:55 von Michael Kuroll

Am Mon, 23 Jul 2007 12:54:46 +0200 schrieb Andreas Kretschmer:

>>>> Du joinst an die "user"-Tabelle?

>>> nein!
>>> an die gameplayer tabelle.

>> Deine Query machte das aber. Mittlerweile hast du ja Lösungsvorschläge.

> Nein, macht sie nicht. Sie versucht es und fällt auf die Nase.
> SCNR.

Nase ist schon ganz grün und blau. ;)