vermutlich kniffliges MySQL INNER JOIN

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Siegem Metatron
Mitglied
Beiträge: 55
Registriert: 07.01.2002 01:00
Wohnort: Weimar
Kontaktdaten:

vermutlich kniffliges MySQL INNER JOIN

Beitrag von Siegem Metatron »

Folgende 2 MySQL Abfragen hab ich:

1.Anfrage:

Code: Alles auswählen

SELECT ziel, MAX( time ) AS time
FROM _po__gang_bot
GROUP BY ziel
2.Abfrage:

Code: Alles auswählen

SELECT gangname, text, gtime
FROM _po__gangwars
"ziel = gangname"

So weit so gut, doch nun wirds kompliziert *gf*
Meine Idee das ganze zu kombinieren. Leider klappts ..so nicht

Code: Alles auswählen

SELECT DISTINCT ug.gangname, ug.text, ug.gtime, MAX( aa.time ) AS aa.time
	FROM _po__gangwars ug
	INNER JOIN _po__gang_bot aa ON ug.gangname = aa.ziel
	GROUP BY aa.ziel
Vielleicht gibts eine Lösung,
und jemand von euch hat eine Idee ?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Und was genau klappt da jetzt nicht? Wie sieht denn das Ergebnis jetzt aus und wie soll es wirklich aussehen?
KB:knigge
Siegem Metatron
Mitglied
Beiträge: 55
Registriert: 07.01.2002 01:00
Wohnort: Weimar
Kontaktdaten:

Beitrag von Siegem Metatron »

phpMyAdmin hat geschrieben:MySQL meldet:

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '.time
FROM _po__gangwars ug
INNER JOIN _po__gang_bot
Ich möchte mir eine Tabelle ausgeben lassen, welche der Query 2 entspricht.
Zusätzlich aber aus Query1 den Höchst Wert Spalte time pro ziel enthält.
gangname | text | gtime | (MAX)time
_____________________________________________________
Anschaulicher kann man es wiedermal mit Artikel verbeispielen.
In der ersten Tabelle sind Artikel, Anbieter und Preis gespeichert.
(viele gleiche Artikel, unterschiedeliche Preise der Anbieter)
In der zweiten Tabelle sind die Detaildaten zu jedem Artikel hinterlegt.

Als Ausgabe möcht ich die Detaildaten jedes Artikels, plus den Höchsten Preis

Viele Grüße ;)
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Siegem Metatron hat geschrieben:..near '.time FROM _po__gangwars ug...
Scheinbar darfst du im Alias keinen Punkt verwenden. Evtl. darfst du noch nichtmal "time" verwenden, da dies ein reserviertes Wort ist (bin mir da aber nicht 100% sicher -> TIAS).
KB:knigge
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Pyramide hat geschrieben:Scheinbar darfst du im Alias keinen Punkt verwenden. Evtl. darfst du noch nichtmal "time" verwenden, da dies ein reserviertes Wort ist (bin mir da aber nicht 100% sicher -> TIAS).
Ein Punkt bringt vermutlich den SQL Parser durcheinander da ein Feld time des Tablealiases aa gleichzeitig wieder den eigenen Tablealias darstellt.

Ich nehme hierfür i.d.R. einen Underscore (_)

Time ist weiterhin seitens MySQL reserviert wie man auch hier nachlesen kann:
-> http://dev.mysql.com/doc/mysql/de/reserved-words.html
Siegem Metatron
Mitglied
Beiträge: 55
Registriert: 07.01.2002 01:00
Wohnort: Weimar
Kontaktdaten:

Beitrag von Siegem Metatron »

Danke euch für die Vielen Tipps.
Genau das war der Grund, weshalb es nicht klappte

Code: Alles auswählen

SELECT DISTINCT ug.gangname, ug.text, ug.gtime, MAX( aa.time ) AS zeit
FROM _po__gangwars ug
INNER JOIN _po__gang_bot aa ON ug.gangname = aa.ziel
GROUP BY aa.ziel
Grund war folegender Ausschnitt "MAX( aa.time ) AS aa.time"
Scheinbar ist es nicht erlaubt einen . im Alias zu haben. Und wenn dieser schon nicht time heissen darf, dann heisst er halt "zeit"

Die oben dargestellte Query klappt super.
THX@all :wink:
Antworten

Zurück zu „Coding & Technik“