mmofacts.com

Fehler im Query - ich find nix

gepostet vor 18 Jahre, 10 Monate von friedenspanzer
Hoffe dass einer von euch den Fehler findet. EXPLAIN sagt was von impossible Where.

SELECT

player.name,
player.gang
. einiges mehr
. aus der
. tabelle player
player.pos_x,
player.pos_y,
gang.name AS gangname,
gang.tag AS gangtag,
armed.weapon_nk,
armed.weapon_fk,
pos.typ AS postyp,
pos.name AS posname,
pos.owner AS posowner,
task.task,
task.ende AS taskende
FROM
player,
gangs AS gang,
map AS pos,
task,
player_armed AS armed
WHERE
player.id = $id
AND
gang.id = player.gang
AND
pos.x = player.pos_x
AND
pos.y = player.pos_y
AND
task.player = $id

Datentypen sind alle übereinstimmend, Query gibt weder nach Ausführen im PHP-Code noch in MyAdmin etwas zurück. Einzeln liefern die Queries alle das korrekte Ergebnis, nur eben nicht in dieser Kombination. Ich such schon die ganze Zeit und weiß einfach net warum das falsch ist.
gepostet vor 18 Jahre, 10 Monate von Klaus
Versuch doch mal LEFT JOINs zu benutzen.
gepostet vor 18 Jahre, 10 Monate von Kampfhoernchen
Und wenns irgend möglich: Wenn diese Query sehr häufig abgesetzt wird, bekommt du glaube ich massive Performance-Probleme.
gepostet vor 18 Jahre, 10 Monate von Klaus
das lässt sich mit cachen von z.B. dem Gangnamen vermeiden. So kann man das verknüpfen der Tabellen verhindern. Man hat zwar mehr Updates, aber die Selects sind i.d.R häufiger.
gepostet vor 18 Jahre, 10 Monate von friedenspanzer
Original von Kampfhoernchen
Und wenns irgend möglich: Wenn diese Query sehr häufig abgesetzt wird, bekommt du glaube ich massive Performance-Probleme.


Das Query wird nicht pro Seitenaufruf getätigt, sondern immer dann, wenn etwas passiert, dass es ändern könnte. Außerdem handelt es sich dabei um 90% der Daten die gebraucht werden, so dass maximal noch 2 kleinere Querys dazukommen.

Macht euch keine Gedanken über die Performance, sagt mir einfach nur was ich tun muss.
gepostet vor 18 Jahre, 10 Monate von Kampfhoernchen
Wie schon gesagt wurde: Joins!
gepostet vor 18 Jahre, 10 Monate von Chojin
Da sind doch ne menge Joins drinn, nur eben keine Zusammengefassten (left joins) :roll:
Hast du mal geschaut wieviele Datensätze das Query zurückliefert? (wenn es den schon mal gelaufen ist.) Ohne left joins sollten das eigendlich ein haufen Datensätze sein.
Das Query holt sich zum Beispiel alle Datensätze von spielern die auf der gleichen X und Y position (, Gang, Task) sind und kombiniert sie je Treffer mit deiner Ausgangstabelle die eindeutig ist (durch die player ID).
Macht aber nicht viel sinn oder? Damit bestimmst du ja nichtmal die spieler die auf der gleichen Position sind, weil (mit dem Query) so eingesetzt der Spieler 40 mal sein eigenes Phantom sieht.

reg4rds
chojin

Auf diese Diskussion antworten