# Daten aus 2 Tabellen mit java abfragen



## platon (30. Mai 2007)

Hallo zusammen,


Ich bin ein "new be" in java und kenne die query language nicht gut. Ich wollte mit einer klasse in java daten abfragen. Die Verbindung zur Datenbank steht ohne probleme nur die abfrage habe ich probleme.
Also ich habe eine Datenbank(recogdata) mit mysql erstellt.  In der recogdata habe ich 2 Tabbelle: 
1. Tab. recoaccount
-ID_AC
-username
-password
-email
etc....

2. Tab. recogusers
ID_CU
-username
-usergroupe
-email
-ID_AC


nun wollte ich aus den beiden Tabellen die emails abfrage und dabei sicher gehen, dass die emails vom gleichen username stammen.


Danke im voraus


----------



## EOB (30. Mai 2007)

hi, arbeitest du mit hibernate, also hql, oder normales sql? dein problem ist jetzt also die query, oder wie du diese mit java an die db sendest?

grüße


----------



## NTB (30. Mai 2007)

Hm, aus welcher Tabelle willst Du denn jetzt welche Daten genau haben? Du hast ja in beiden ein Feld "email".

Sinnvoll wäre es übrigens, wenn beide Tabellen auch eine "ID" mitführen. Die kannst Du in MySQL  mit "id int NOT NULL auto_increment" anlegen und wird dann von MySQL automatisch mitgezählt. Über diese ID könntest Du dann die beiden Tabellen einfacher referenzieren.

Ansonsten kann ich noch http://www.sqlcourse.com empfehlen. Da lernst Du die Grundlagen von SQL in 15 Minuten.


----------



## platon (30. Mai 2007)

Hi,
Ja, Java und Mysql. Und mein problem ist die query , java. wie die klasse aussieht.
aus den beiden Tabellen die emails und wie gesagt dabei gehe dass die emails vom gleichen username stammen. ich weiss , dass es sowas gibt: SELECT from .... UNION .... aber mit java habe keine Ahnung.

P.S. Ein Account kann mehrere User haben deswegen 

Danke fuer Irhe Antwort.


----------



## HoaX (30. Mai 2007)

ich versteh immernoch nicht was du willst. du willst zu einem account die emails aller zugeordneten benutzer? schreib doch bitte mal deine sätze so dass sie sinn ergeben ...


----------



## platon (30. Mai 2007)

Also ich griefe auf die Datenbank zu. das ist klar.
Es geht jetzt darum die moeglichkeit zu haben, die emailadresse in die jeweilige Tabelle zu tun und abfragen zu koennen.


Danke


----------



## NTB (30. Mai 2007)

Aha, Du hast eine Emailadresse.
In welche Tabelle und in welche Spalte willst Du die packen? Was hast Du genau vor? Erzähl doch mal ein bischen mehr... es scheint ein bischen so, als wüsstest Du selbst noch nicht so genau, was Du vor hast.


----------



## platon (31. Mai 2007)

Hallo NTB,

Doch ich weiss, was ich vor habe. Ich habe ein programm, das meine mails von dem POP3 serve holt und in ein einen ordner xxx tut.  Und ein programm, das die mails aus dem ordner xxx holt und verschict. bis dahin kein problem laeuft alles. Meine Frage oder problem ist die emailadresse von den empfangenen mails in die beiden Tabellen -recoaccount->feld email und -recogusers->feld email von der datenbank recogdata  packen und dann auch holen kann.


danke


----------



## NTB (31. Mai 2007)

Ah gut, warum nicht gleich so eine Beschreibung, was Du vor hast...
Das Einfügen ist recht einfach:

```
INSERT INTO recogusers (username,email) values ('Mr. Foo','Die ist eine Email');
INSERT INTO recoaccount (username,email) values ('Mr. Foo','Die ist eine Email');
```

Wenn ich Dich bei allem richtig verstanden habe, siehst Du daran schon, dass zwei Mal das gleiche gemacht wird. Da wäre ein anderer Aufbau der DB sinnvoller. Dazu müsstest Du aber nochmal weiter ausholen.

Und Dein Problem ist - so kombiniere ich - jetzt zu einem User mit einem Statement alle Emails zu holen?


```
SELECT * FROM recoaccount ra JOIN regogusers ru ON ra.username = ru.username
```

Bringt Dich das so weiter? Oder immer noch daneben?


----------



## platon (31. Mai 2007)

danke erstmal,

und wenn ich z.B nach der Verbindung wie hier einfuge dann brauche ich nichts mehr?


```
package com.dbase.connect; import java.sql.*; publicclass Connectsql {

/** *@paramargs */ publicstaticvoid main(String[] args) {

try{
Class.forName("com.mysql.jdbc.Driver");

}catch(ClassNotFoundException e){

System.out.println("Driver not found");
} //Verbindung-Objekt erzeugen und konfigurieren Connection con = null;

String db = "jdbc: mysql://localhost/recogdata";
String user = "user";
String passwd = "pwd";

try{
con = DriverManager.getConnection(db, user, passwd);

}catch(SQLException e){

System.out.println("there is no connection");

}

{
INSERT INTO recogusers (username,email) values ('Mr. Foo','Die ist eine Email'); 
INSERT INTO recoaccount (username,email) values ('Mr. Foo','Die ist eine Email'
}
//Oder
{
    SELECT a.email, u.email, a.username 
FROM recoaccount a, recoguser u 
WHERE a.username=u.username 
AND a.email=u.email

}


}
} /* Object conn;
if (conn != null) 
{ 
try 
{ 
conn.close(); 
} 
catch(SQLException sqle) 
{ 
System.out.print(sqle.getMessage()); 
} */
```

Das war ganze Zeit meine Frage. Entschuldigung, dass ich mich nicht klarer ausgedruckt habe.


----------

