# Oracle Datenbank über Java aufrufen



## lifeisbeautiful (6. Sep 2017)

Hallo zusammen,

ich möchte eine bestehende Oracle Datenbank mit Java aufrufen können. Die Verbindung zur Datenbank habe ich bereits hergestellt. JDBC-Treiber etc. ist alles schon durch. Ich bekomme Ergebnisse in der Konsole in Eclipse, jedoch ohne Spaltennamen. Und Außerdem werden auch logischerweise nur die Spalten engezeigt, die ich auch in der Ausgabezeile angeben. (System.out.println).

Ich möchte aber gerne, dass mir Ecplise die Datenbank so anzeigt, wie es mir auch Oracle nach Eingabe des SELECT Statements anzeigt. Undzwar den kompletten Datensatz und auch die Spaltennamen. Mir ist bewusst, dass das mit meinem aktuellen Code nicht möglich ist, nur konnte ich auch nicht in google etwas passendes dazu finden.

Kurzgefasst: ich möchte in Java ein SELECT Statement eingeben und auf der Konsole angezeigt bekommen, undzwar mit Spaltennamen und dem kompletten Datensatz, der eben dazugehört. ich möchte nicht in der Ausgabezeile einzeln (mit einem Index) eingeben, welche Spalten ich angezeigt bekommen möchte, da ich ja quasi nicht weiß, wie die Tabelle aussieht und wie viele Spalten es enthält.

Hier mein aktueller Code:

```
import java.sql.*;

public class Testprogramm
{
 public static void main(String[] args)
 {
 
      
  try
  {
  Class.forName("oracle.jdbc.driver.OracleDriver");
  Connection con = DriverManager.getConnection("--Hier kommen die Verbindungsdaten rein--");
  Statement stmt=con.createStatement();
  String sqlstmt="--Hier kommt das Select Statement--";
  ResultSet rs=stmt.executeQuery(sqlstmt);
 
 
  while(rs.next())
   System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " +  rs.getInt(3) + "  " + rs.getString(4)); // Hier muss ich ja die einzelnen Spaltenindexe eingeben, was aber für meinen Fall keinen Sinn ergibt
  con.close();
  }
 
  catch(Exception a)
  {
   System.out.println(a);
  }
 
 }
}
```


----------



## Flown (6. Sep 2017)

Wenn du schon ein ResultSet hast, dann kannst du dir auch die MetaDaten mittels `rs.getMetaData()` holen. HIER und HIER wirst du sicher fündig.


----------



## lifeisbeautiful (6. Sep 2017)

Flown hat gesagt.:


> Wenn du schon ein ResultSet hast, dann kannst du dir auch die MetaDaten mittels `rs.getMetaData()` holen. HIER und HIER wirst du sicher fündig.



Vorerst mal vielen lieben herzlichen Dank für deine schnelle und hilfreiche Rückmeldung. Ich habe es jetzt hinbekommen, die Spaltennamen anzuzeigen. Das habe ich dann mit einer for-Schleife gemacht. Soweit ich jetzt denken konnte, benötige für die Daten in den Spalten eine weitere for schleife, undzwar geschachtet in die andere. Liege ich eigentlich richtig?

Für die Spaltennamen habe ich die Spaltenanzahl gezählt und dann die for-Schleife laufen lassen. Nur weiß ich grad nicht wie ich das mit den Daten machen soll. Hast du eventuell Lust, da ein paar Tipps zu geben?

So sieht der Code für die Spaltennamen aus:

ResultSetMetaData rsmd = rs.getMetaData();
*int* columnCount = rsmd.getColumnCount();

*for* (*int* i = 1; i <= columnCount; i++)
{
String columnName = rsmd.getColumnName(i);
System.*out*.print(columnName + " ");

    (hier eventuell noch eine for Schleife? Wenn ja, wie ?)

}


----------



## fhoffmann (6. Sep 2017)

Wenn ich mich richtig erinnere, klappt getString bei allen Typen. Also:

```
while(rs.next()) {
  String result = ""; // oder StringBuilder benutzen
  for(int i = 1; i <= columnCount; i++) {
    result += rs.getString(i) + "  "
  }
  System.out.println(result); 
}
```


----------



## lifeisbeautiful (7. Sep 2017)

fhoffmann hat gesagt.:


> Wenn ich mich richtig erinnere, klappt getString bei allen Typen. Also:
> 
> ```
> while(rs.next()) {
> ...



Herzlichen Dank für deine Hilfe. Das hat gestern geklappt. Hast du vielleicht ne Idee, wie ich das mit den Zeilen so hinbekommen kann, dass alles geordnet wird und nicht veruschts? Wenn zb eine Zeile in der 1. Spalte länger ist, dann verutscht automatisch auch die Zeile der 2. Spalte nach rechts. Dann sieht das ganze immer verschoben.

Mein anderes ähnliches Problem ist, dass ich die Spalten und Zeilen nicht untereinander schreiben kann. Damit auch unter jeder Spalte die richtigen Zeilen ausgegeben werden. Weil es gibt Spaltennamen, die dann eben zu lang sind und deswegen Daten von einer anderen Spalte unter der anderen Spalte landen. ich hoffe ich konnte das so gut wie möglich erklären.

Eventuell beide for schleifen ineinander schachteln?


----------



## lifeisbeautiful (7. Sep 2017)

Anscheinend wird das nur in der Konsole so ausgegeben. Sobald ich das in eine Excel kopiere, ist alles wieder so, wie es sein sollte.

Eine andere Frage: Ich möchte nun die ausgegebene Tabelle in eine CSV-File abspeichern. Mir ist zwar klar, dass ich das mit einem BufferedWriter und FileWriter machen muss. Jedoch war ich nicht so sehr erfolgreich. Ich habe allerdings zwei Ausgaben gemacht. Das eine für die Spaltenausgabe und das andere für die Zeilenausgabe. Sieht man ja auch im Code. Ist es denn in diesem Fall möglich, die Ausgabe Ordnungsgemäß in eine CSV-Datei zu speichern? Wenn ich diesen Code ausführe wird es zwar gespeichert, aber wenn ich die File in Excel öffne, dass wird alles nur in einem Kästchen gespeichert und alles nur in einer Zeile. Also völlig unformatiert. So sieht mein aktueller Code aus:

```
public class sql {
    
    public static void main(String[] args) throws IOException {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection( << Verbindungsdaten >> );
            Statement stmt = con.createStatement();
            String sql = << SQL - STATEMENT >> ;
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();

            //Spalten zählen
            int columnCount = rsmd.getColumnCount();

            //Spaltennamen ausgeben
            String result1 = "";
            for (int m = 1; m <= columnCount; m++) {
                result1 = rsmd.getColumnLabel(m);
                System.out.print(result1 + "\t");
            }

            //Trennungslinie
            System.out.println("\n---------------------------");

            //Zeilenausgabe
            while (rs.next()) {
                String result = "";
                for (int n = 1; n <= columnCount; n++) {
                    result += rs.getString(n) + "\t";
                }
                System.out.println(result);


                //Speichern
                FileWriter fw = new FileWriter("ausgabe.csv");
                BufferedWriter bw = new BufferedWriter(fw);

                bw.write(result1);
                bw.write(result);
                bw.close();
            }

        } catch (Exception a) {
            System.out.println(a);
        }
    }
}
```

Für die bisherigen Hilfen bedanke ich mich nochmals sehr herzlich. Ihr habt mir sehr geholfen. Ich freue mich auf weitere Unterstützungen.


----------



## Flown (8. Sep 2017)

```
while (rs.next()) {
	String result = "";
	for (int n = 1; n <= columnCount; n++) {
		result += rs.getString(n) + "\t";
	}
	System.out.println(result);


	//Speichern
	FileWriter fw = new FileWriter("ausgabe.csv");
	BufferedWriter bw = new BufferedWriter(fw);

	bw.write(result1);
	bw.write(result);
	bw.close();
}
```
Weißt du was du da machst?


----------



## lifeisbeautiful (8. Sep 2017)

Flown hat gesagt.:


> ```
> while (rs.next()) {
> String result = "";
> for (int n = 1; n <= columnCount; n++) {
> ...



Mit der while- bzw. for-Schleife gebe ich ja die Datenbank aus. Ohne Spaltennamen. Mit dem FileWriter und BufferedWriter habe ich versucht, das ganze in eine File abzuspeichern. "result" sind ja die Zeilen und "result1" die Spalten. Ich weiß allerdings auch, dass das nicht richtig ist. Nur habe ich noch nie do etwas gemacht. Habe nicht so viel Erfahrung.

Edit: Mir ist grad aufgefallen, dass ich den FileWriter etc. in die while-Schleife gepackt habe. Das macht natürlich keinen Sinn.


----------



## Flown (8. Sep 2017)

lifeisbeautiful hat gesagt.:


> Edit: Mir ist grad aufgefallen, dass ich den FileWriter etc. in die while-Schleife gepackt habe. Das macht natürlich keinen Sinn.


Exakt!


----------



## lifeisbeautiful (8. Sep 2017)

Flown hat gesagt.:


> Exakt!


Danke, aber es will einfach nicht klappen -.- Kannst du mir weiterhelfen?
Sämtliche Youtube Tutorials oder Google Suchen zeigen immer fast das gleiche. Ich weiß nicht was ich falsch mache..


----------



## Flown (8. Sep 2017)

Was klappt denn nicht? Zeig mal eine Beispielausgabe.


----------



## Flown (8. Sep 2017)

So z.B. 
	
	
	
	





```
//Spalten zählen
int columnCount = rsmd.getColumnCount();

//Spaltennamen ausgeben
StringJoiner header = new StringJoiner(";");
for (int i = 1; i <= columnCount; i++) {
  String columnLabel = rsmd.getColumnLabel(i);
  header.add(columnLabel);
  System.out.print(columnLabel + "\t");
}
System.out.println();

//Trennungslinie
System.out.println("---------------------------");

//Zeilenausgabe
StringJoiner rows = new StringJoiner(System.lineSeparator());
while (rs.next()) {
  StringJoiner columns = new StringJoiner(";");
  for (int i = 1; i <= columnCount; i++) {
    String value = rs.getString(i);
    columns.add(value);
    System.out.print(value + " ");
  }
  rows.add(columns.toString());
  System.out.println();
}
try(FileWriter fw = new FileWriter("ausgabe.csv")) {
  fw.write(header.toString());
  fw.write(System.lineSeparator());
  fw.write(rows.toString());
}
```


----------



## lifeisbeautiful (8. Sep 2017)

Flown hat gesagt.:


> Was klappt denn nicht? Zeig mal eine Beispielausgabe.



Das was ich eigentlich möchte ist, die in der Konsole ausgegebene Tabelle in eine CSV-Datei abzuspeichern.
Im moment wird die Datei erstellt, ich öffne es in Excel, aber die Excel ist leer. Und wenn sie sich mal füllt, dann ist alles nur einem einem Feld. Irgendwas mit der Formatierung eventuell? Und auch nicht der komplette Datensatz wird reingespeichert, sondern nur ein Teil..

So sieht aktuell der Code aus:


```
//Spalte ausgeben
            String result1 = "";
            for(int m=1; m<=columnCount; m++)
            {
                result1 = rsmd.getColumnLabel(m);
                System.out.print(result1 + "\t");
            }
      
            //Trennungslinie
            System.out.println("\n---------------------------");
          
          
            //Zeilen ausgeben
            while(rs.next())
            {
                String result = "";
                for(int n=1; n<= columnCount; n++)
                {
                    result += rs.getString(n) + "\t";              
                }
                System.out.println(result);      
            }          
          
            FileWriter fw = new FileWriter("ausgabe.csv");
//            BufferedWriter bw = new BufferedWriter(fw);
            fw.write(result); // Hier wird auch ein Fehler angegeben bei result
            fw.close();          
        }
      
        catch(Exception a)
        {
            System.out.println(a);
        }      
    }
}
```

Ich hoffe ich nerve nicht und freue mich auf deine Unterstützung..

Edit: Oh sry, habe deinen Post erst jetzt gesehen. Ich probiere das mal aus. Herzlichen Dank. Ich schätze deine Hilfe sehr!!


----------



## lifeisbeautiful (12. Sep 2017)

Flown hat gesagt.:


> So z.B.
> 
> 
> 
> ...




Vielen Dank Flown! Sehr nett von dir. Das hat soeben reibungslos geklappt.
Ich hätte da noch eine weitere Frage. Im nächsten Step würde ich mir gern eine GUI programmieren, wo ich dann quasi Username, Passwort, Hostname, Port, SID, Service-Name in einer GUI eingeben kann. Darüber hinaus möchte ich ein SQL-Statement eingeben, dieses SQL-Statement in einem Textfeld ausgeben und zum Schluss noch die Möglicheit, dieses SQL-Statement bzw die angezeigte Datenbank dann in eine CSV-File abspeichern. Das Konzept klappt ja auch ganz gut, auch dank deiner Hilfe. Jetzt möchte ich das alles eben dynamisch machen, also in einer GUI.

Nur weiß ich nicht so genau, wie ich das mit den Klassen-Aufteilung machen soll. Ich habe mir überlegt 2 Klassen zu machen.

- Eine Klasse mit der GUI
- Eine Klasse wo die eben die Logik durchgeführt wird. Quasi der Code, den ich hier her gepostet habe.

Meinst du es reichen diese beiden Klassen so von der Idee her?

Edit: Ich kenn mich mit den Layouts nicht so ganz aus. Ich würde gerne ein freies und flexibles Layout haben, wo ich alle Elemente Frei plazieren kann. Welches Layout würdest du mir empfehlen?


----------



## Flown (12. Sep 2017)

lifeisbeautiful hat gesagt.:


> - Eine Klasse mit der GUI
> - Eine Klasse wo die eben die Logik durchgeführt wird. Quasi der Code, den ich hier her gepostet habe.
> 
> Meinst du es reichen diese beiden Klassen so von der Idee her?


Ich kann dir nur empfehlen das zu machen. Dieses Konzept nennt sich übrigens MVC (Model-View-Controller -> gibt eine Menge Tutorials im Netz).


lifeisbeautiful hat gesagt.:


> Edit: Ich kenn mich mit den Layouts nicht so ganz aus. Ich würde gerne ein freies und flexibles Layout haben, wo ich alle Elemente Frei plazieren kann. Welches Layout würdest du mir empfehlen?


Kommt drauf an was du für ein UI Framework verwendest. Aber hier gibt es Leute die mehr Desktop UI-Erfahrungen haben als ich (bin im Web-Bereich unterwegs).


----------



## lifeisbeautiful (15. Sep 2017)

Flown hat gesagt.:


> Ich kann dir nur empfehlen das zu machen. Dieses Konzept nennt sich übrigens MVC (Model-View-Controller -> gibt eine Menge Tutorials im Netz).
> 
> Kommt drauf an was du für ein UI Framework verwendest. Aber hier gibt es Leute die mehr Desktop UI-Erfahrungen haben als ich (bin im Web-Bereich unterwegs).



Hallo Flown,

Ich habe aktuell 2 Klassen. Beide sind noch nicht miteinander verbunden, was aber mein Ziel ist. Die eine Klasse enthält die GUI und die andere quasi Datenbankverbindung. Die Parameter die ich eigentlich über die GUI eingeben möchte, sind aktuell eben noch in dieser einen Klasse bzw im Code. Das ist der Code, den ich ja hier in dieses Thema gepostet habe.

Ich möchte das natürlich mit einem MVC Konzept machen. Was ich dabei aber nicht so ganz verstehe ist, wie ich das aufteilen muss. Kenn mich da nicht so gut aus. Reichen da auch nicht 2 Klassen aus?

Mein Programm ist ein kleines Client-Programm und sollte am Ende folgendes können:

-Verbindung mit einer Datenbank, mit den üblichen Parametern wie Username, Passwort, Host, etc.
-Eingabe eines SQL-Statements
-SQL-Abfrage bzw den Datensatz durch einen Export Button in einer CSV-File abspeichern.
-Pfadangabe, um festlegen zu können, wo die CSV-File abgelegt werden soll.

So sieht das Grobkonzept aus. Ich wollte dich fragen, ob du mir eventuell sagen könntest, wieviele Klassen man hier machen sollte und was jeweils in welche enthalten sein soll? Klar, das eine ist die GUI, die andere die Logik etc. Aber du kannst das immer so gut erklären. Da freue ich mich, wenn du kurz deine Denkweise mal erklärst.


----------



## lifeisbeautiful (20. Sep 2017)

Hi Flown, ich brauche da dringend deine Hilfe -.-
Oder auch andere Freunde im Forum, bin für jede Hilfe dankbar.

ich habe da aktuell diesen Code


```
void export()
    {
        try
        {
            int columnCount = rsmd.getColumnCount();

            StringJoiner header = new StringJoiner(";");
            for (int i = 1; i <= columnCount; i++) {
                String columnLabel = rsmd.getColumnLabel(i);
                header.add(columnLabel);
                System.out.print(columnLabel + "\t");
            }

            System.out.println();
            System.out.println("----------------------------------------");

            StringJoiner rows = new StringJoiner(System.lineSeparator());
            while (rs.next()) {
                StringJoiner columns = new StringJoiner(";");
                for (int i = 1; i <= columnCount; i++)
                {
                    String value = rs.getString(i);
                    columns.add(value);
                    System.out.print(value + "\t");
                }

                rows.add(columns.toString());
                System.out.println();

                FileWriter fw = new FileWriter(file);
                fw.write(header.toString());
                fw.write(System.lineSeparator());
                fw.write(rows.toString());
                fw.close();
            }
        }
        catch (IOException | SQLException e)
        {
            e.printStackTrace();
        }
    }
```

Folgendes möchte ich machen:

Ich möchte die Ergebnisse dieser Ausgabe quasi in ein Array speichern. Besteht die Möglichkeit, dass ihr mir hier helfen könnt? In diesem Fall mache ich nur eine Abfrage von einer Tabelle, die nur 2 Spalten hat. Das wäre ja wichtig zu wissen für das Array.  Habe aktuell zwei klassen erstellt:


Klasse Projects (Spaltennahme)

```
import java.util.ArrayList;

public class Projects
{   
    private String project_name;
    private ArrayList<Method> methodList;
   
    public String getProject_name()
    {
        return project_name;
    }
    public void setProject_name(String project_name)
    {
        this.project_name = project_name;
    }
   
   
    public ArrayList<Method> getMethodList()
    {
        return methodList;
    }
    public void setMethodList(ArrayList<Method> methodList)
    {
        this.methodList = methodList;
    }
}
```


Klasse Method (Spaltennahme)


```
public class Method {

    private String method_name;
   
    public String getMethod_name()
    {
        return method_name;
    }

    public void setMethod_name(String method_name)
    {
        this.method_name = method_name;
    }   
}
```

Ich habe hier jetzt getter setter Methoden gemacht. Ich weiß aber leider nicht weiter -.- Ich bin für jeden Code sehr dankbar..


----------



## Flown (20. Sep 2017)

Was möchtest du machen? Bring doch mal ein kleines Beispiel, wie die Eingabe und das gewünschte Ergebnis aussehen soll.


----------



## lifeisbeautiful (20. Sep 2017)

Also ich weis nicht so genau, wie ich das Beispiel aufzeigen soll -.-
Ich versuche es zu erklären:

Ich habe eine Tabelle mit Projekten. Und jeder dieser Projekte hat mehrere Methoden. Jetzt möchte ich quasi ein SQL Statement eingeben, das diese zwei Sachen anzeigt und das ganze in ein Array speichert und es eventuell auch ausgibt.

Beispiel:
Projekte 1
           Methode 1
           Methode 2
           Methode 3
           Methode 4

Projekt 2
           Methode 1
           Methode 2
           Methode 3
           Methode 4

Konnte ich das soweit erklären?

wichtig ist es eben, dass aber im Array zu speichern...


----------



## Flown (20. Sep 2017)

Was willst du in ein Array speichern?


----------



## lifeisbeautiful (20. Sep 2017)

Die Werte dieser Spalten. Es gibt ja verschiedene Projekte. Und die haben alle einen Namen. Und so ist das mit den Methoden auch. 1 Projekt hat mehrere Methoden. Und die möchte ich als String in ein Array speichern..


----------



## Flown (20. Sep 2017)

Mal etwas auf, ich kann mir keinen Reim drauf machen, was du genau haben möchtest (darum kann ich dir auch nicht helfen).


----------



## lifeisbeautiful (20. Sep 2017)

Schau mal, so sieht zb. die Tabelle aus:

Projekt------Methoden <-- (Spalten)
------------------------
Projekt 1 -- Methode 1 <-- (Zeilen)
Projekt 1 -- Methode 2
Projekt 1 -- Methode 3
Projekt 2 -- Methode 1
Projekt 2 -- Methode 2
Projekt 2 -- Methode 3
Projekt 3 -- Methode 1

Diese Tabelle stelle ich quasi mit einem SQL-Statement dar. Und dann würde ich das gerne in einem Array speichern und dann zb. folgendermaßen Ausgeben:

Projekt 1
----------Methode 1
----------Methode 2

Projekt 2 
----------Methode 1
----------Methode 2

In einer art und weise in einem Array speichern, dass alle zugehörigen Methoden zu einem Projekt aufgelistet werden. Aktuell sind die Projektnamen mehrmals aufgelistet in der Tabelle, da ein Projekt mehrere Methoden hat.

Bringt dich das weiter?


----------



## Thallius (20. Sep 2017)

Ich würde dir ganz dringend folgende Lektüre empfehlen

https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

Gruß

Claus


----------



## mrBrown (20. Sep 2017)

Thallius hat gesagt.:


> Ich würde dir ganz dringend folgende Lektüre empfehlen
> 
> https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
> 
> ...


Was sollte man denn in dieser Zweispaltigen Tabelle deiner Meinung nach noch Normalisieren?


----------



## AndiE (20. Sep 2017)

Was willst du erreichen? Soweit ich das sehe, stehen Projekt und Methoden in einer m:n-Beziehung. Nun gibt es zwar datenbanktechnisch eine Beziehungstabelle. Aber ich würde hier her im Sinne der Object Relation Mappings(ORM) vorgehen, um die realtionale Arithmeik zu umgehen. Recht unschön, aber praktischist es z.B: Alle Felder von Projekte und Methodengemeinsam in eine Liste abzuspeichern. Daraus kannst du dann eine Liste von Projekten, die wieder eine Liste von Methoden haben erstellen. Daraus kannst du dann einfach deine Anzeige zusammenbauen. Das erkaufst du dir mit Redundanz, klar, aber da die Werte automatisch eingetragen werden, sind diese alle gleich. Das kann man bestimmt auch eleganter machen, aber das wäre mein Vorschlag, weil ich selbst mal bei einem Projekt genau diese Probleme mit der Beziehungstabelle hatte .


----------



## lifeisbeautiful (22. Sep 2017)

Ich habe eine Datenbank mit 3 Mio Datensätzen. Diese Datenbank enthält 160 Projekte. Diese Projekte haben mehrere Methoden. Diese Methoden haben mehrere Versuche. Ich will keine anderen Datenbanken etc erstellen. Normalisierung benötige ich auch nicht. Ich möchte eine Ordnerstruktur erstellen. Für den aktuellen Stand erst einmal nur 2 Ordnerstrukturen.

Projekte --> Methoden (Unterordner)

Und der letzt Ordner, in diesem Fall Methoden, wird dann die CSV File enthalten. Das heißt am Ende müssten 160 Ordner mit all den Projektnamen (wie in der Datenbank) erstellt sein. Und diese Ordner enthalten dann jeweils mehrere Methodenordner. Und in diesen Methodenordnern sind dann die CSV-Files mit den restlichen Daten. Die Struktur der Datenbank wird sich nicht ändern. Das heißt dass die CSV File am Ende mehrmals die gleichen Projekte und Methoden hat, da ja diese dann mehrere Methoden hat und diese Methoden mehrere Versuche.

Ich möchte diese Datenbank quasi in einer Ordnerstruktur (in diesem Fall erst einmal nur 2 Ordnerstufen) aufteilen.

Konnte ich das soweit erklären?


----------



## mrBrown (22. Sep 2017)

Du willst einfach die gesamten 3 Mio Datensätze plump ins Filesystem dumpen?
Das klingt nach einem grandiosen Plan


----------



## lifeisbeautiful (22. Sep 2017)

mrBrown hat gesagt.:


> Du willst einfach die gesamten 3 Mio Datensätze plump ins Filesystem dumpen?
> Das klingt nach einem grandiosen Plan



Deine unnötigen Kommentare kannst du dir wirklich sparen. Ich suche hier nach Hilfe. Du hast viel zu lernen von "Flown". Aber Hoffnung nicht aufgeben!


----------



## Thallius (22. Sep 2017)

Mit

SELECT Projekte FROM Table GROUP BY Projekte

erhälst du die Namen aller Projekte. Mit

SELECT Methoden FROM Table WHERE Projekte = Projektname GROUP BY Methoden 

erhälst du die Namen aller Methoden welche zu dem Project gehören.

SELECT Versuche FROM Table WHERE Projekte = Projektname AND Methoden = Methodenname GROUP BY Versuche

erhälst du alle Versuche zu einer Methode.

Was ist daran jetzt so schwer?

Gruß

Claus


----------

