Mario Lorenz: zum Suchergebnis zusätzlich einen Wert 1 oder 2 ausgeben

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

  1. 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

    1. 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

  2. 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

  3. 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