weil es ja auch keine zeile namens "unbegrenzt" gibt![]()
Die ganze Abfrage kann so wohl nicht hinkommen.
Da man ja unterscheiden muss, ist der Status unbegrenzt, oder liegt er in einem gewissen Zeitrahmen.
Führ doch mal das in PHPMyAdmin aus:
Vermutlich bekommst du dann für deinen Testuser mehrere Zeilen?Code:SELECT t2.name AS upgrade, t1.gueltig_bis AS gueltig, t1.unbegrenzt AS unbegrenzt FROM vms_goldmember t1 LEFT JOIN vms_goldbonus t2 ON t2.id=t1.bonus WHERE t1.uid=USERIDXYZ
Aktuell wird davon genau eine gewählt, nämlich die (erste) bei dem der Bonus anhand gueltig_bis noch gültig ist. Müsste man jetzt wissen, was da drin steht, wenn der Bonus aber unbegrenzt ist, und dementsprechend mit OR das Verbinden.
Kill one man, and you are a murderer.
Kill millions of men, and you are a conqueror.
Kill them all, and you are a god. - Jean Rostand, Thoughts of a Biologist (1939)
Dann hast du den Post aber nicht genau genug gelesen.
Es mag zwar jetzt in dem 1 Fall bei dem 1 Testuser funktionieren, generell wird aber durch das weglassen der 2. WHERE Bedingung ja einfach nur die allererste Zeile für den User genommen.
Egal ob das die mit dem aktuellen Bonus ist, oder ob der Bonus noch gültig ist, sofern zeitlich begrenzt.
Also müsstest du deinem User
a) einen unbegrenzten Bonus geben
b) zeitlich begrenzt, aber noch gültig
c) zeitlich begrenzt, aber schon abgelaufen
d) b+c evtl auch noch mit der Startzeit des Bonus (die es gibt so wie ich das sehe)
Dann kannst du sagen "es geht"![]()
Kill one man, and you are a murderer.
Kill millions of men, and you are a conqueror.
Kill them all, and you are a god. - Jean Rostand, Thoughts of a Biologist (1939)