Sql Abfragenproblem
-
@Linnea:
Du hast das nicht mit drin:
Wie bekomme ich es nun hin, das nur die globalen Nachrichten angezeigt werden, die NACH der ersten "normalen" Nachricht stehen.Ob das Folgende wirklich klappt hängt davon ab, ob dein Datenbanksystem solche Sub-Selects oder die MIN-Funktion unterstützt (selbstverständlich ungetestet):
SELECT * FROM ero_news WHERE (sichtbar='-1' OR sichtbar=SpielerNummer) AND id>=(SELECT MIN(id) FROM ero_news WHERE sichtbar=SpielerNummer);
In SpielerNummer muss natürlich noch 1 oder 2 rein und die ' fehlen auch noch, aber ich weiss ja nicht, wie du das Statement erstellst (dynamisch/statisch/per C++/aus einem Programm/auf der Datenbank/...).
-
hm also ich nehm php mit mysql und klopp die Abfragen auch mit php direkt rein.
SELECT * FROM ero_msgs WHERE (sichtbar_fuer = '-1' OR sichtbar_fuer = 1 ) AND id>=(SELECT MIN(id) FROM ero_msgs WHERE sichtbar_fuer =1);
scheint da aber nicht zu gehen, der meint
#1064 - You have an error in your SQL syntax near 'SELECT MIN( id )
FROM ero_msgs
WHERE sichtbar_fuer =1 ) ' at line 4Geht einfach nur darum das ich da so wenig Abfragen wie möglich drin haben will weil ich da halt so 50 Neuanmeldungen
die Woche hab und öm... viele Leute viele Abfragen und 2 abfragen = 2*viele abfragen :>
-
Ist evtl. die MySQL-Version zu alt ? Subqueries kann MySQL in älteren Versionen gar nicht...
-
SELECT * FROM ero_msgs WHERE (sichtbar_fuer = '1') OR ((sichtbar_fuer = -1 ) AND (id > (SELECT MIN(id) FROM ero_msgs WHERE (sichtbar_fuer =1))));
und so? Unterstützt MySQL mittlerweile Subqueries?
-
#1064 - You have an error in your SQL syntax near 'SELECT MIN( id )
FROM ero_msgs
WHERE ( sichtbar_fuer =1 ) ) ) )' at line 4hab auch den Eindruck der will die Subqueries nich.. sind mehr ehrlichgesagt auch neu
mysql ver ist 3.23.58
-
dreaddy schrieb:
sichtbar_fuer = '-1' OR sichtbar_fuer = 1
Da ist auch noch ein Fehler. Entweder Text oder Zahl -> mit oder ohne '
-
das is glaubich egal, da habich vollstes Vertrauen das mysql das erkennt
Naja vollstes auch nicht :p *probier*hm jo
select * from ero_msgs where sichtbar_fuer = 1 or sichtbar_fuer = '-1'
geht zum Beispiel
-
Das ist mir nun wieder neu.
-
Strings werden in Hochkommas gesetzt. Zahlen nicht. Bei Zahlen ist es aber egal ob in Hochkommas oder nicht. Bei strings ist es erforderlich sonst Fehler.
Der Subquery ist IMHO unötig. Ich sehe nicht was der bringt. Subquerys gibt es erst ab MySQL 4.1.x.
Ein timestamp in der Tabelle könnte noch helfen. Dann muss man nicht immer alle Datensätze abfragen. Man merkt sich die letzte ID oder letzte Zeit und mach
WHERE id > gemerkt
WHERE timestamp > letztezeit
-
dreaddy schrieb:
mysql ver ist 3.23.58
Habs gerade nachgelesen: Ab 4.1 kann MySQL Subqueries.
(Die 4.1er Version kommt mir übrigens irgendwie schneller vor, als die 3er...)