Seite 1 von 1

vermutlich kniffliges MySQL INNER JOIN

Verfasst: 03.07.2005 00:00
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 ?

Verfasst: 03.07.2005 02:18
von Pyramide
Und was genau klappt da jetzt nicht? Wie sieht denn das Ergebnis jetzt aus und wie soll es wirklich aussehen?

Verfasst: 03.07.2005 15:35
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 ;)

Verfasst: 03.07.2005 16:27
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).

Verfasst: 04.07.2005 17:17
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

Verfasst: 15.07.2005 14:50
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: