Ergebnistabelle modifizieren anhand einer Spaltenwert



  • Hallo Zusammen,

    Ich habe eine MYSQL Abfrage mit joins von 3 verschieden Tabellen, die mir als
    Ergebnis zwei spaltigen tabelle liefert. Als Ergebnis ist:

    id value
    --------------
    1 "joe"
    2 "satriani"
    ....

    zu sehen. Ich moechte anhand Spaltenwert von Zelle "Wiederholung", die in einer
    von diesen 3 verschiedenen Tabellen enthalten ist, das ergebnis `wiederholung`
    mal duplizieren.

    Beispiel, id=1 hat Wiederholung-Spaltenwert 3:

    id value
    ---------------
    1 "joe"
    1 "joe"
    1 "joe"
    2 "satriani"

    Kann man sowas in MYSQL Ebene erledigen? Und wenn ja, wuerde ich mich auf ein
    Beispiel-Abfrage freuen.

    Gruss,



  • Ich würde spontan sagen, dass sowas nicht möglich ist.
    Ehrlich gesagt seh ich auch keinen Sinn darin.
    Wofür brauchst Du das?



  • Du könntest brutal ein Kreuzprodukt verwenden, wenn die Anzahl Wiederholungen begrenzt sind. Sagen wir, maximale Anzahl der Duplikate ist 10:
    mal grob die Richtung:

    CREATE TABLE multiplier (n integer not null);
    INSERT INTO multiplier VALUES (1);
    INSERT INTO multiplier VALUES (2);
    INSERT INTO multiplier VALUES (3);
    INSERT INTO multiplier VALUES (4);
    INSERT INTO multiplier VALUES (5);
    INSERT INTO multiplier VALUES (6);
    INSERT INTO multiplier VALUES (7);
    INSERT INTO multiplier VALUES (8);
    INSERT INTO multiplier VALUES (9);
    INSERT INTO multiplier VALUES (10);

    Jetzt könntest Du "joinen":
    select * from
    test JOIN multiplier ON n <= anz

    Aber es ist ein dirty hack, ich würde das auch lieber auf App-Ebene lösen.



  • Hallo Zusammen,

    Airdamn schrieb:

    Ich würde spontan sagen, dass sowas nicht möglich ist.
    Ehrlich gesagt seh ich auch keinen Sinn darin.
    Wofür brauchst Du das?

    Ok, sowie ich vermutet habe... Ich weiss nicht wie ihr das sieht aber Sinn
    macht es fuer mich wenn angenommen:

    // From Tabelle Person.

    eid Essgewohneit Wiederholung
    ------------------------------------
    30 Eis 2

    // anstatt
    eid Essgewohneit
    -------------------
    30 Eis
    31 Eis

    Dadurch wollte ich mir zusaetzlich einen Zeile sparen wobei es nach einer
    passenden Abfrage wieder auf zwei Zeile Expandiert wird.
    In der App wuerde ich dann die expandierte Tabelle enumerieren sowie

    zaehler=0 ;
    schleife akt_zeile==eis
     wenn zaehler==0  eis fuer fruehstueck ; 
     wenn zaehler==1  eis fuer mittagessen ;
    zaehler += 1 ;
    ende schleife
    

    Gruss,



  • Am besten die Daten so abfragen, wie Du schon hast, dann entsprechend in
    Deiner App verarbeiten.


Anmelden zum Antworten