# MySQL Datenbank durchsuchen



## m-e-l (16. Feb 2015)

Hallo! 

Ich habe ein kleines Problem bei meiner Datenbank Suchfunktion.

Ich habe eine Datenbank mit 3 Table. Jede Reihe besitzt eine eindeutige id nach der ich in meinem Programm suchen lasse. 
Soweit so gut klappt alle prima. 
Ich benötige aber eine Suchfunktion die mir nicht nur nach einer sondern nach alles id's sucht. 


```
public ArrayList<Karte> leseKarte(ArrayList<Zutaten> aa) {
		ArrayList<Karte> co = new ArrayList<>();
		try {
			
			Class.forName(driver).newInstance();

			con = DriverManager
					.getConnection("jdbc:mysql://localhost/generator?user=root");

			myStatement = con.createStatement();

			
			myResultSet = myStatement.executeQuery(
                                         "SELECT * FROM karte, zutaten, anleitung"
					+ " where zutaten.idZ=" + aa.get(0).getID()
					+ " and karte.zutatenID = zutaten.idZ"
					+ " and karte.anleitungID = anleitung.idA ");
			 

			while (myResultSet.next()) {
				co.add(new Karte(myResultSet.getInt("idc"), myResultSet
						.getString("nameZ"), myResultSet.getString("anleitung")));
				

			}
			con.close();

		} 
		catch (Exception e) {
			System.out.println(e.getMessage());

		}
		return co;
	}
```

Wie kann ich nach mehreren id's suchen?
???:L
Danke vorab für jeden Tip!

lg mel


----------



## Thallius (16. Feb 2015)

Das geht mit einem JOIN


```
SELECT karte.a, karte.b, zutaten.a, zutaten.b, anleitung.a, anleitung.b
FROM karte
LEFT JOIN zutaten ON (zutaten.idZ = karte.zutatenID)
LEFT JOIN Anleitung ON (Anleitung.idA = karte.anleitungID
WHERE zutaten.idz = :getid
```

Bitte gewöhne dir ab SELECT * zu verwenden. Hole immer nur die Werte die Du auch wirklch brauchst und benenne sie entsprechend. Nur dann weißt du in 3 Jahren auch noch was der Select eigentlich macht und ausserdem wird er viel effektiver.

Gruß

Claus


----------



## m-e-l (16. Feb 2015)

Danke für die rasche Antwort.

Ja dieses Select* ist pure faulheit. Werde mir das abgewöhnen.

Dein Vorschlag funktioniert prima. Dankeschön!:toll:

Jetzt kommt leider ein folgeproblem.
Ich kann immer nur einen Eintrag auswählen der dann gesucht wird. 
Bei multibler Selection in meiner JList wird die zweite Auswahl einfach ignoriert.
Die Methode zur Multiblen Selection ist schon dabei. 
Vorschläge zur Behebung des Problems?

Besten Dank im Voraus!
Lg mel


----------



## Thallius (16. Feb 2015)

Tja da wirst du dann mit ganz vielen ODER arbeiten müssen oder für jeden Eintrag einen eigenen SELECT machen.

Gruß

Claus


----------



## Tobse (16. Feb 2015)

Thallius hat gesagt.:


> Tja da wirst du dann mit ganz vielen ODER arbeiten müssen oder für jeden Eintrag einen eigenen SELECT machen.
> 
> Gruß
> 
> Claus



Das Schlüsselwort (oder die Schlüssel-Klausel) heisst *IN*: SQL IN Operator


----------



## m-e-l (23. Feb 2015)

Danke für die Antworten. Hat geklappt!
:applaus::toll:


----------

