Doppelte Daten in Spalte, nur die erste abrufen wie?

java007

Bekanntes Mitglied
Hallo Leute,

in der einen Spalte meiner Datenbank über die ich die Daten abrufen möchte existieren identische Daten. Ich möchte sozusagen in dieser Spalte das jeweile Datum finden, ohne dass die weiteren identischen Daten in dieser Spalte weiterhin berücksichtigt werden, sodass bei der ersten gleich stop gemacht wird und so die Daten von der Zeile abgerufen.

Wenn keine identischen Daten in der Spalte existieren, funktioniert der von mir erstellte SQL-Code, folgendermaßen:

[JAVA=42]

ResultSet rs = stmt.executeQuery("SELECT " + Daten[t] + " FROM Daten Where Alter = '"+a+"' ");
[/code]

Ich würde mich auf eure Hilfe super freuen :)

Vielen Dank
 

java007

Bekanntes Mitglied
Hi fassy,

danke für dein tip, allerdings funzt es nicht so wie ich es mir wünsche.
Ich möchte einfach nur, dass nur die erste Zeile, bei dem es zutrift, angezeigt wird. Die restlichen Zeilen wo es auch zutreffen kann sollen vernachlässigt werden.

Mir macht das Array noch kopfschmerzen wie ich das einbaun könnte

[JAVA=42]
for (int t =0 ; t <= daten.length - 1; t++) {

ResultSet rs = stmt.executeQuery("SELECT " + Daten[t] + " FROM Daten Where Alter = '"+a+"' ");
ResultSetMetaData rsmd = rs.getMetaData(); ................

[/code]

also da wo alter zutrifft, stopp machen und diese zeiel abrufen, sodass das array nur für diese zeiel vorgesehen wird und die restliche zeilen die auch plausibel wären auslasen


gruß
 
Zuletzt bearbeitet:
G

Gast2

Gast
also du möchtest nur eine Zeile als resultset bekommen?

Welche Datenbank nutzt du?

Bei Oracle hängst du einfach ein [c]AND ROWNUM = 1[/c], bei MySQL ein [c]LIMIT 0,1[/c], evtl macht es noch Sinn dann ein [c]order by[/c] dazu zupacken damit du mehr Kontrolle drüber hast welches die erste Zeile ist.

Was macht dir den bei dem Array Kopfschmerzen? Ich verstehe nicht so ganz was du machen willst. Momentan rufst du z.B: 5 mal ein Select auf um 5 spalten mit den gleichen Bedingungen zu selektieren.

Warum nicht die Schleife weglassen und [c]Select * FROM[/c] und dann beim Fetchen der resulst die Spalten entsprechend auslesen? Wäre deutlich performater.

Du solltest übrigens ganz dringen ein PreparedStatement verweden... Dann kannst du dir das Quoting um [c]'"+a+"'[/c] auch sparen und es ist um einiges sicherer
 
Zuletzt bearbeitet von einem Moderator:

java007

Bekanntes Mitglied
Hi fassy,

danke für die Tipps ich teste sie gleich mal aus,
was mir kopfschmerzen macht ist eigentlich dass

[JAVA=42]

...Where Alter = '"+a+"' ");
[/code]

das prog geht in der spalte Alter alle identischen alter durch, soll aber bei dem ersten stehen bleiben :(
 

Michael...

Top Contributor
Wie soll den das Statement ohne Java Variablen aussehen? Wenn Du die Werte einer Spalte abfragst, reicht ja - wie bereits erwähnt - ein simples distinct. Oder willst Du doch mehrere Werte aus unterschiedlichen Spalten abfragen bzw. was genau willst Du eigentlich von der DB wissen?
 

java007

Bekanntes Mitglied
das prog geht in der spalte "Alter" alle identischen alter durch, soll aber bei dem ersten stehen bleiben und dann diese zeile auslesen :(

das möchte :( aber klappt nicht irgendwie

gruß
 
G

Gast2

Gast
Du drückst dich etwas unverständlich aus.

Gib doch mal ein bisschen mehr Quellcode dann können wir da mehr zu sagen. Mir sieht deine Schleife da mächtig unlogisch aus.
 

java007

Bekanntes Mitglied
sorry, dass ich alles es ein wenig unverständlich formuliert habe, also
ich habe in der Datenbank die spalten

Name | Vorname| Alter| Ort |Plz|

nun möchte ich mit einem vorgegebenem Alter in die Datenbank gehen und die erste zeile die diesen Alter-Wert beinhaltet finden (es gibt auch weitere zeilen mit dem selben Alter diese vernachlässigen, nur die erst gefundene in der tabele betrachten, also die zuerst gefunden wird). Sobald diese zeile mit dem jeweiligen Alter gefunden ist, dann aus dieser zeile Name, Vorname, Alter, Ort, Plz auslesen und am ende
diese Daten in einen String Array einlesen
sodass ich am ende zB einen String Array wie das hier habe, mit folgendem Inhalt:

String Array {Name, Vorname, Alter, Ort, PLZ}

[JAVA=42]
for (int t =0 ; t <= daten.length - 1; t++) {

ResultSet rs = stmt.executeQuery("SELECT " + Daten[t] + " FROM Daten Where Alter = '"+a+"' ");
ResultSetMetaData rsmd = rs.getMetaData(); ................[/code]

in dem array Daten[t] sind die Spaltennamen Name, Vorname, Alter, Ort, PLZ und so dachte ich mir dass ich diese daten mit dem obigen code abrufen kann. Allerdings wenn ich das mit dem obigen code so mache dann werden alle identischen Alter in der Spalte Alter berücksichtigt was ich ja nun nicht will. Ich kriege dann hintereinander alle Vornamen von den Personen die den jeweiligen Alter haben :(
das ist mein problem, ich hoffe dass es nun verständlich ist.
Vielen Dank nochmals für eure Geduld,
gruß
 
G

Gast2

Gast
Nein, so ganz klar ist mir das nicht.

du hast also ein Tabelle mit (nurmal vorname und alter angesehn):

Klaus, 14
Petra, 31
Kurt, 21
Klara, 14

Wenn du jetzt noch Alter 14 suchst soll NUR Klaus zurückkommen?

Ich verstehe einfach nicht wozu das gut ist und was du eigentlich machen möchtest.


Wie ich schon mal weiter oben meinte: Warum fragst du nicht Name,Vorname,Alter,Ort und PLZ in einem SELECT ab.

Probier mal:

Java:
PreparedStatement stmt = connection.prepareStatement("SELECT Name,Vorname,Alter,Ort,PLZ FROM Daten WHERE Alter = ?");
stmt.setString(1, "14"); // oder halt in deiner Schleife stmt.setString(1, a); 
ResultSet rs = stmt.executeQuery();

while(rs.next()){
	String[] row = new String[]{
			rs.getString("Name"),
			rs.getString("Vorname"),
			rs.getString("Alter"),
			rs.getString("Ort"),
			rs.getString("PLZ"),
			};
      System.out.println(Arrays.toString(row));
}

Das würde dir jetzt z.B. die rows für Klaus und Klara ausgeben. Wenn du jetzt nur Klaus haben willst - mit LIMIT begrenzen.

Also
Java:
PreparedStatement stmt = connection.prepareStatement("SELECT Name,Vorname,Alter,Ort,PLZ FROM Daten WHERE Alter = ? LIMIT 0,1");

aber wie gesagt schau dir erstmal das an und sag dann was dir daran nicht passt
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
nun möchte ich mit einem vorgegebenem Alter in die Datenbank gehen und die erste zeile die diesen Alter-Wert beinhaltet finden
Willst Du selbst festlegen was die erste Zeile ist oder bleibt das der Datenbank überlassen?
Wie bereits erwähnt könntest Du - abhängig von der Datenbank - mit Rownum oder Limit nur einen Datensatz zurückliefern lassen.
Alterativ könntest Du Dir nur den ersten Satz des ResultSets weiterverarbeiten.
[JAVA=42]
stmt.executeQuery("SELECT " + Daten[t] + " FROM Daten Where Alter = '"+a+"' ");[/code]

in dem array Daten[t] sind die Spaltennamen Name, Vorname, Alter, Ort, PLZ und so dachte ich mir dass ich diese daten mit dem obigen code abrufen kann.
Das wird so nicht funktionieren. Da Du eher alle Werte abfragst, könntest Du gleich
Code:
Select *
verwenden bzw. die Felder direkt ins Statement schreiben. Mit dem Array müsstest Du Dir das Statement über eine Schleife zusammenbasteln.
 

java007

Bekanntes Mitglied
Hallo fassy, michael,

erstmal möchte ich mich sehr für eure Hilfe mich bedanken :)

@fassy

ohne limi 0hne LIMIT 0,1 funktioniert es einwandfrei, es werden alle zeilen ausgegeben allerdings sobal ich LIMIT 0,1 einfüge
folgendermaßen:
[JAVA=42]

PreparedStatement stmt = con.prepareStatement("SELECT Name, Vorname, Alter, Ort, PLZ FROM Daten WHERE Alter = ? LIMIT 0,1");
stmt.setString(1, "14"); // oder halt in deiner Schleife stmt.setString(1, a);
ResultSet rs = stmt.executeQuery();

while(rs.next()){
String[] row = new String[]{
rs.getString("Name"),
rs.getString("Vorname"),
rs.getString("Alter"),
rs.getString("Ort"),
rs.getString("PLZ"),
};
System.out.println(Arrays.toString(row));
}


stmt.close();
con.close();
return row;
}
[/code]

bei :

ResultSet rs = stmt.executeQuery();

macht er stopp und gibt folgende fehlermeldung

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Alter = Pa_RaM000 LIMIT 0,1'.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)....

achja ich möchte nich mitteilen, dass ich als Datenbank "MS-Access" benutze


Vielen Dank nochmals für alles und Gute Nacht erstmal :)
 
G

Gast2

Gast
Deswegen die Frage nach der benutzen Datenbank, probier mal:
SQL:
SELECT Name, Vorname, Alter, Ort, PLZ FROM Daten WHERE Alter = ? TOP 1
 

java007

Bekanntes Mitglied
Guten Morgen fassy :)

Ich habe nun "TOP 1" folgendermaßen eingegeben:

[JAVA=42]
....eStatememt("SELECT Name, Vorname, ALTER, Ort, PLZ FROM Daten WHERE 'ALTER = ? TOP 1' ");[/code]

ohne ' ' gab es eine Fehlermeldung, sodass ich diese einfügen musste.

Nun sobald ich es ausführe, bleibt er bei :

[JAVA=42]
stmt.setString(1, "14");
[/code]

stehen und gibt mir folgende Meldung:

[JAVA=42]
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(Unknown Source)....
[/code]


wie gesgt ohne TOP 1 funzt es wunderbar allerdings bekomme ich dann alle Zeilen :(

Gruß
 

Michael...

Top Contributor
Ich habe nun "TOP 1" folgendermaßen eingegeben:
[JAVA=42]
....eStatememt("SELECT Name, Vorname, ALTER, Ort, PLZ FROM Daten WHERE 'ALTER = ? TOP 1' ");[/code]
Das ist ja keine gültige Syntax.
Wieso quälst Du Dich denn, mit der Begrenzung auf einen Datensatz? Nimm halt einfach das entgegen was die Datenbank zurückgibt und verwende nur den ersten Datensatz, oder ist die Datenmenge so umfangreich?

Ich würde übrigens das Alter als Ganzzahl und nicht als String in der Datenbank speichern, dann könnte man Durchschnittswerte ermitteln auf > oder < vergleichen...
 

java007

Bekanntes Mitglied
Das Probelm ist endlich gelöst und zwar folgendermaßen :)

[JAVA=42]
PreparedStatement stmt = con.prepareStatement("SELECT TOP 1 Bezeichnung, PLZ, Ort, PAN, BIC, PZBM FROM Daten WHERE BLZ = ?");


[/code]

TOP 1 muss direkt hinter Select kommen :)

Vielen Dank an alle :)

endlich hurraaa :D

Gruß :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P SQL Doppelte Zuweisung von Personalnummern Datenbankprogrammierung 6
L SQL-Statement SQL Statement doppelte Einträge finden Datenbankprogrammierung 9
F MySQL Doppelte Einträge verhindern Datenbankprogrammierung 2
E H2 Doppelte Einträge vermeiden Datenbankprogrammierung 3
K Hibernate mehrfach doppelte Einträge in der Ergebnissmenge Datenbankprogrammierung 5
B Doppelte Zeilen einer Doppelten Spalte aus einer Tabelle entfernen. Datenbankprogrammierung 2
C Doppelte Datensätze Datenbankprogrammierung 11
thE_29 ResultSet und doppelte Spalten Datenbankprogrammierung 4
E Qie bekomm ich das hin --> doppelte Spaltenwerte Datenbankprogrammierung 3
D Alte Daten ins neue Modell quetschen Datenbankprogrammierung 6
R Mongodb Daten werden immer überschrieben Datenbankprogrammierung 7
R Mongodb Daten in einem bestimmten Document speichern Datenbankprogrammierung 1
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
B Daten HSQL-DB Datenbankprogrammierung 2
V H2 ManyToMany wie speichere ich die Daten? Datenbankprogrammierung 10
thobren Projekt SQlite! Wie kann ich auf auf SQlite Daten zugreifen? Datenbankprogrammierung 4
OnDemand Daten verschlüsseln Datenbankprogrammierung 42
L Oracle Daten in Häppchen selektieren Datenbankprogrammierung 5
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Z Ausgabe nur bestimmter Daten Datenbankprogrammierung 6
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Kirby.exe Vorschläge zur Verschlüsselung von Daten in der DB Datenbankprogrammierung 2
T Java Spiel Daten speichern Datenbankprogrammierung 1
LimDul H2 Embedded DB und Gigabytes an Daten Datenbankprogrammierung 0
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
R Wie mit zu viele Daten umgehen? Datenbankprogrammierung 2
F MySQL Wie speichere ich Daten zeitlich abhängig? Datenbankprogrammierung 4
T Oracle Normalisierung und Daten splitten Datenbankprogrammierung 1
JG12111989 DB-Daten werden falsch dargestellt Datenbankprogrammierung 7
K H2 Daten in die H2 console DB eintragen Datenbankprogrammierung 2
L SQLite Ändern der Daten in einem UNIQUE Feld Datenbankprogrammierung 1
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
L Oracle Daten von einem Server zum andere kopieren Datenbankprogrammierung 24
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
L MySQL Vergleichen von Array-Inhalt, Ausgabe gleicher Daten Datenbankprogrammierung 3
W Daten in Java intern abfragen Datenbankprogrammierung 1
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
I MySQL Datenbankstruktur angleichen - Daten behalten Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
P LDAP: Daten eintragen funktioniert nicht Datenbankprogrammierung 7
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
O mit Multi-Thread Daten aus Datenbank lesen und schreiben Datenbankprogrammierung 22
F Daten verdichten Datenbankprogrammierung 0
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
B Daten aus DB in Word Dokument Datenbankprogrammierung 2
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
D Daten posten auf RestApi (Mongodb/NoSQL) Datenbankprogrammierung 0
I Fehler bei Ausgabe der Daten aus der DB Datenbankprogrammierung 3
OnDemand MySQL Daten aktualisieren Datenbankprogrammierung 6
D Daten von einem Server in eigenem Java-Programm benutzen Datenbankprogrammierung 6
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
S Daten aus Form in Datenbank nur einmal eintragen Datenbankprogrammierung 2
6 JBDC Daten verschlüsseln? Datenbankprogrammierung 2
F MySQL Daten ändern über Java Datenbankprogrammierung 3
G SQLite Daten aus SQLite DB in andere SQLite DB importieren Datenbankprogrammierung 4
H Grosse Menge an Daten in eine Datenbank Datenbankprogrammierung 32
M Daten nachträglich hinzufügen Datenbankprogrammierung 6
2 MySQL Daten aus einer Array auslesen und MySQL Statment erstellen. Datenbankprogrammierung 5
E Daten einer SQL-Datenbank aus Combobox in labels schreiben Datenbankprogrammierung 6
N HSQLDB Daten Auslesen Datenbankprogrammierung 3
O Viele Verbindungen-Exception bei insert Daten zur MySQL-Datenbank Datenbankprogrammierung 2
P MySql daten in leeren jtable übertragen Datenbankprogrammierung 5
SexyPenny90 SQL Daten sortieren und top 5 ausgeben Datenbankprogrammierung 7
L Hibernat will Daten nicht einfügen??? Datenbankprogrammierung 2
B MySQL DB Daten aktualisieren Datenbankprogrammierung 9
D MySQL Daten werden aus Datenbank gelesen, obwohl sie dort gar nicht angekommen sind Datenbankprogrammierung 8
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
L SQLite Daten werden nicht in die Tabelle eingefügt Datenbankprogrammierung 7
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
C ResultSet enthält nicht alle Daten Datenbankprogrammierung 4
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
J Daten synchronisieren in Multi-Client-Anwendungen (Hibernate) Datenbankprogrammierung 6
S JPA: DB Schema ändern und Daten nicht verlieren - wie? Datenbankprogrammierung 5
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
F Daten in die DB hinzufügen Datenbankprogrammierung 7
H Klasse welche Mysql Daten zurück gibt Datenbankprogrammierung 18
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
H Daten in/aus Datenbank schreiben Datenbankprogrammierung 2
M DropDownBoxen mit MySQL Daten füllen Datenbankprogrammierung 3
E MySQL Daten in die Datenbank eingeben via Java Programm Datenbankprogrammierung 3
F ORA 17410 Keine weiteren Daten aus Socket zu lesen Datenbankprogrammierung 2
B Daten aus Datenbank holen Datenbankprogrammierung 6
T Problem beim schreiben von daten Datenbankprogrammierung 4
N Daten aus Datenbank abfragen und anzeigen in der Praxis?? Datenbankprogrammierung 2
G MySQL Bekomme keine Daten. Datenbankprogrammierung 7
L CLOB-Daten werden beim Einfügen in die Datenbank geändert? Datenbankprogrammierung 5
G Daten aggregieren Datenbankprogrammierung 11
Gossi Oracle 2 Daten (Datum) vergleichen Datenbankprogrammierung 6
W MySQL Daten aus bestimmter Spalte lesen Datenbankprogrammierung 2
E MySQL Befüllen einer MySQL DB mit großen Daten Datenbankprogrammierung 6
P Daten aus MySql Datenbank lesen??? Datenbankprogrammierung 6
J Daten vergleichen Datenbankprogrammierung 10
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
X Daten einer DatenbankTabelle in JTable darstellen Datenbankprogrammierung 13
T Designfrage: DB-Daten direkt oder verzögert speichern Datenbankprogrammierung 2
Dragonfire Daten aus jsp Datei in datenbank speichern Datenbankprogrammierung 15

Ähnliche Java Themen

Neue Themen


Oben