# Ein Query mit Mysql erzeugen



## BGates (14. Jul 2005)

ich habe folgendes problem:

in meinem MySql database befinden sich folgende Spalte :


  DATUM.............QLTY_1.........QLTY_2........QLTY_3.......QLTY_4........QLTY_5.......QLTY_6.......QLTY_7  


01.07.2005........... 3...................5................5.................9.................12..............0................3
08.07.2005............2.................10................3.................5...................7..............2................4
15.07.2005............2...................6................3.................5...................0..............2................6



Ich will also ein java programme schreiben die eine Verbindung zu der datenbank(Mysql) aufbaut,und
folgendes erledigt:




 DATUM..........................QLTY


01.07.2005 ....................3
02.07.2005......................5
03.07.2005......................5
04.07.2005......................9
05.07.2005.....................12
06.07.2005......................0
07.07.2005......................3


08.07.2005 ......................2
09.07.2005......................10
10.07.2005........................3
11.07.2005........................5
12.07.2005........................7
13.07.2005........................2 
14.07.2005........................4


15.07.2005         ..
....               ..
....              ...
....               ..


Also auf deutsch die Spalte(ab QLTY_2)    QLTY_2 ,   QLTY_3  ,    QLTY_4  ,   QLTY_5  ,  QLTY_6  ,  QLTY_7,
stellen hier die Restlichen Tage (Bzw die werte) einer gesamten WOche dar.Die Spalte DATUM stellt hier nur der StartWert
der jeweiligen Woche dar.

Die neue Tabelle soll erzeugt werden (dieses mal mir nur 2 Spalten : DATUM und QLTY).


Es würde mich freuen , wenn jemand mich helfen könnte.

Mfg


----------



## krey (14. Jul 2005)

Welche Datentypen haben die Felder der Datenbank?
Du kannst doch einfach alle Daten einer Spalte in ein Array laden, und dann über eine Schleife die Nächsten sieben Tage erzeugen und ihnen den Wert aus dem Array zuweisen. Dann kannst du das ganze über ein (prepared) Statement in die Datenbank schreiben. Also in die neue Tabelle mit nur zwei Spalten.


----------



## BGates (14. Jul 2005)

Hi Krey,

Danke für die schnell Antwort.
Eine Schleife für die nächste sechs Tagen, wäre schon richtig.Aber leider kenne ich mich nicht genaue mit dem Datentyp Date (um Datum zu erzeugen).
Und mit dem (prepared) statement habe ich auch Problem dies zu erzeugen. ???:L 

Könntest du mir vielleicht ein Beispiel Code fortführen?

A propos datentypen: das Feld DATUM enthält ,Daten vom Typ Date, und die Felder QLTY_1 bis QLTY_2 , Daten vom typ integer.

Danke dir.

Mfg


----------



## bambi (15. Jul 2005)

Hi,

ich habe hier ein Artikel zum Typ DATE fuer MySQL gefunden. Ist sicher ganz interessant fuer Dich:
DATE in MySQL

Ansonsten: wo liegt denn Dein Problem mit dem Prepared Statement? Du kannst ja Deinen Code mal posten und dann
schauen wir mal rein.


----------



## BGates (15. Jul 2005)

Hi Bambi,

Danke für den Artikel.
ich komme leider nicht voran.
Wie kann ich Date_Werte erzeugen, wenn ich nur StartWerte habe.
Also , wie krey schon sagte , überführe ich alle Spalte (der erste Tabelle) in Arrays und dann weise ich einfach
den jeweiligen Date_Werten entsprechenden QLTY_Werte zu. und dann die in eine neue Tabelle (die mit nur 2 spalten)
einfüge.

Also um klarer zu sein: Wenn ich ein Array mit Start_Werte so habe : 01.07.2005  ,   08.07.2005,
wie krige ich die fehlende Werte? 
Ab Start_Werte := 01.07.2005  würde 

02.07.2005
03.07.2005
04.07.2005
05.07.2005
06.07.2005 
07.07.2005    
                      fehlen.

Genauso auch mit  Start_werte := 08.07.2005    würde 

09.07.2005
10.07.2005
11.07.2005 
12.07.2005
13.07.2005
14.07.2005
                  fehlen.  usw.....

Danke die Hilfe.

mfg


----------



## bambi (15. Jul 2005)

Hier mal ein Beispiel, um die Daten zu bekommen. Du bekommst ja sicher java.sql.Date von Deiner DB. Ich habe jetzt
einfach mal angenommen, dass Du immer die naechsten 7 Tage brauchst. Falls es doch flexibler sein soll, kannst Du 
ja mit startDate und endDate arbeiten.

```
private java.util.Date[] getDateList(java.sql.Date startDate) {
    // Array fuer alle Tage erstellen
    java.util.Date[] dateList = new java.util.Date[7];
    
    // Calendar Objekt erstellen
    Calendar cal = Calendar.getInstance();
    cal.setTime(startDate);
    
    // Values in das Array einfuegen
    int currentDay = 0;
    
    for (int i = 0; i < 7; i++) {
        dateList[i] = cal.getTime();
        // weiss nicht, ob das hier vielleicht auch einfacher geht - arbeite nicht so oft mitdem
        // Calender, kenne also nicht unbedingt alle kleinen "Tricks" ;o)
        cal.set(Calendar.DAY_OF_MONTH,(cal.get(Calendar.DAY_OF_MONTH) + 1));
    }

    return dateList;
}
```
Du musst die Elemente im Array sicher noch etwas umformatieren, wenn Du sie wieder in Deine neue Tabelle schreibts.
Aber ich hoffe, dass Dir das erst mal weiterhilft...  :wink:


----------



## BGates (15. Jul 2005)

Hi Bambi,

ich probiere es jetzt. Melde mich wieder wenn ich noch Hilfe Brauche
Danke

mfg


----------

