zum Suchergebnis zusätzlich einen Wert 1 oder 2 ausgeben
Mario Lorenz
- datenbank
1 Vinzenz Mai0 Alex0 mario_lorenz
Guten Tag,
ich möchte in einem Select zusätzlich zum erreichten Suchergebnis in einer weiteren Spalte immer im Wechsel den Wert "1" oder "2" ausgeben lassen.
Die Tabelle hat einen Autoincrement-Wert. Man könnte Ihn durch zwei Teilen lassen. Gibt es einen Kommawert dann das Wert "1", gibt es keinen Kommawert dann Wert "2". Das würde sich durch ein IF-Klausel im Select lösen lassen. Leider wurden in der DB schon einige Einträge gelöscht, sodaß nicht wirklich immer im Wechsel der Wert 1 oder 2 herauskommen würde.
Habt Ihr eine Idee?
Vielen Dank,
Mario
Hallo
ich möchte in einem Select zusätzlich zum erreichten Suchergebnis in einer weiteren Spalte immer im Wechsel den Wert "1" oder "2" ausgeben lassen.
Welches Datenbankmanagementsystem (DBMS) in welcher Version?
Die Tabelle hat einen Autoincrement-Wert. Man könnte Ihn durch zwei Teilen lassen. Gibt es einen Kommawert dann das Wert "1", gibt es keinen Kommawert dann Wert "2". Das würde sich durch ein IF-Klausel im Select lösen lassen. Leider wurden in der DB schon einige Einträge gelöscht, sodaß nicht wirklich immer im Wechsel der Wert 1 oder 2 herauskommen würde.
Dafür sind Autoinkrement-Werte auch nicht gedacht.
MySQL: Nutze benutzerdefinierte Variablen, siehe dieses Archivposting
Nutze weiterhin den Modulo-Operator (rechne Modulo 2) und eine Addition (von 1),
das erspart Dir IF ...
Freundliche Grüße
Vinzenz
Jetzt warst Du schneller,
hier also noch einmal die korrigierte Version ohne das IF
SET @counter :=0;
SELECT products_id, (MOD( @counter := @counter +1, 2 ) +1) AS 'wert'
FROM products
;
Gruss und Dank,
Mario
Hallo Mario,
wie wäre es, wenn du dir einfach eigene "ID's" zusammenbaust. Du fängst also mit $x=0 an nach dem ersten Ausgabe $x++ und dazwischen machst du es so ähnlich, wie du oben beschrieben hast also:
if ($x % 2 == 0) $wert = 1;
else $wert = 2;
hoffe, dass dir das hilft
mfg
Alex
Noch mal einen schönen Abend,
es gibt eine Lösung, die ich gerade durch probieren und kombinieren gefunden habe und die ich Euch nicht vorenthalten möchte:
SET @counter :=0;
SELECT products_id, IF( MOD( @counter := @counter +1, 2 ) , 1, 2 ) AS 'wert'
FROM products
;
Es wird also gezählt, und per Modulo geprüft, ob ein Restwert vorhanden ist, wenn ja gibt es als Ergebnis eine "2" oder eine "1".
Mit den Werten 1 und 2 in der Ergebnisliste habt Ihr dann einen perfekten Schalter um in PHP z.B. für jede zweite Zeile einer Tabelle ein alternativ-CSS anzugeben.
Gruss, Mario