Select- Abfrage

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hi,

ich habe in meiner Datenbank die Tabellen - Regal, Fächer, Zeitungen, Artikel, Stichwörter (die in dieser Reihenfolge auch zusammenhängen) und möchte jetzt eine Select- Abfrage machen, mit der ich herausbekomme, in welcher Zeitung Artikel über Datenbanken vorkommen und wo die liegen - also ich brache erstens das Stichwort Datenbanken, suche dann den Artikel, dann welche Zeitungen es sind und dann welche Fächer und welche Regale es sind.

Wie kann man das mit einer SELECT- Abfrage lösen,
Besten Dank für Antworten,
schönen Abend noch,
 
S

SlaterB

Gast
übe doch erstmal nur das Select auf Artikel,

danach brauchst du einen ganz normalen Join mit zunächst mal nur einer weiteren Tabelle,
wo liegt da die Schwierigkeit?

wenn dir die Einzelschritte unbekannt sind, wäre ein Tutorial das geeignete Thema
 

MQue

Top Contributor
Hab schon mal ein ER- Modell gezeichnet, bin im Abfragen von einer Tabelle ziemlich fit aber eben mit den Joins nicht so ganz und ich weiß eben nicht, wie ich mir Infos über 4 Tabellen zusammensuche und in einer Ausgabe anzeige,
Wäre euch sehr dankbar für Hilfe,
Vielen Dank,
schönen Abend noch,

hier wäre mein ER- Diagramm:

Archiv.JPG
 
S

SlaterB

Gast
select alle benötigten spalten
from alle beteiligten Tabellen
where (artikel einschränken) and (die ganzen join Bedingungen)


und immer noch günstig, vor allem wenn das nun noch mehr als die ursprünglich 4 angedeuteten Tabellen sind:
ganz langsam anfangen, erstmal nur auf einer Tabelle die richtigen Schlagwörter suchen/ mit Artikel verbinden,
oder was auch immer da die Einschränkung ist,
danach Schritt für Schritt mit Regalen und sonst wie komischen Sachen joinen
 

MQue

Top Contributor
SlaterB hat gesagt.:
select alle benötigten spalten
from alle beteiligten Tabellen
where (artikel einschränken) and (die ganzen join Bedingungen)

und sonst wie komischen Sachen joinen

Moin,

vielen Dank erst mal für die Antwort,
das heißt also das

Code:
where (artikel einschränken) and (die ganzen join Bedingungen)

die join- Bedingungen sind?

Eine weitere Frage hätte ich noch zu dem ER- Model und zwar bei einem m:n Beziehnung wird ja eine Zwischentabelle erzeuget, sodass jeweils der Primary key der beiden zu verbindenden Tabellen in die Zwischentabelle eingetragen wird,

Unklar ist mir jetzt eine 1:n Beziehung (z.B.: Artikel und Zeitungen), muss ich da noch in der Tabelle Artiken eine Foreign key "Zeitungen_id" dazufügen, damit ich die Verbindung zwischen den Zeitungen und den Artikeln erzeuge - wahrscheinlich schon!?
So wie ich es jetzt habe, wirds wahrscheinlich noch keine Verbindung zwischen diesen beiden Tabellen geben!??

Dankeschön,
 
S

SlaterB

Gast
> das heißt also das
>> where (artikel einschränken) and (die ganzen join Bedingungen)
> die join- Bedingungen sind?

die join-Bedingungen und die echten Anforderungen an den Artikel oder an die Stichwörter, wie doch da zu lesen ist,
das ist ja nicht das gleichte

zu 1:n und deinem ER stimme ich deinen Thesen zu
 

MQue

Top Contributor
Ich möchte / muss den Eintrag von Artikeln (und allen Tabellen, die dabei betroffen sind) über eine stored prozedure realisieren.
Ich hab mich ein bisschen in Stored Prozeduren eingelesen, hab deshalb aber die Befürchtung, dass das nicht so leicht werden wird da ja wieder mehr als eine Tabelle betroffen ist,
Wäre deshalb sehr dankbar für Tipps in diese Richtung,

vielen Dank,
 

MQue

Top Contributor
FenchelT hat gesagt.:
StoredProcedure fuer welches DBMS?

für ORACLE

ich hab jetzt mal eine (Mörder-)Abfrage geschrieben, welche mir das Regal, den Raum und die Regal_Nummer zurückliefern,
Mein Problem ist jetzt noch, dass ich auch die Zeitung und den Artikel in der Endtabelle wissen will,
kann man das irgendwie machen, dass ich von einer Unterabfrage eine Ausgabe in die Endtabelle gebe?
schönen Abend noch,


Code:
SELECT reg.Regal_Location Regal, raeume.Raum_Name Raum, reg.Regal_Nummer FROM Regale reg, Raeume raeume
WHERE reg.Regal_id = raeume.Raum_id AND reg.Regal_id IN

(SELECT r.Regal_id FROM Regale r, Faecher f 
WHERE r.Regal_id = f.Fach_id AND Fach_id IN 

(SELECT f.Fach_id FROM Faecher f, Zeitungen z
WHERE f.Fach_id = z.Faecher_fk AND z.Zeitung_Name IN 

(SELECT z.Zeitung_Name FROM Artikel a, Zeitungen z    // ich möchte auch z.Zeitung_Name in der Endtabelle haben
WHERE a.Artikel_id = z.Zeitungen_id AND z.Zeitungen_id IN 

(SELECT a.Artikel_id FROM Schlagwoerter s ,Artikel a, Schlagwoerter_Artikel sa WHERE s.Schlagwort_id = sa.Schlagwort_id AND a.Artikel_id = sa.Artikel_id AND s.Schlagwort = 'Datenbanken'))));
 
S

SlaterB

Gast
> [..] FROM Schlagwoerter s ,Artikel a, Schlagwoerter_Artikel sa WHERE s.Schlagwort_id = sa.Schlagwort_id AND a.Artikel_id = sa.Artikel_id [..]

du kannst doch schon Joins?
 

MQue

Top Contributor
SlaterB hat gesagt.:
> [..] FROM Schlagwoerter s ,Artikel a, Schlagwoerter_Artikel sa WHERE s.Schlagwort_id = sa.Schlagwort_id AND a.Artikel_id = sa.Artikel_id [..]

du kannst doch schon Joins?


Bin gerade am lernen, Left Outer Join, Right Outer Join, Cross Join, Inner Join, Left Inner Join usw, Null Join

ich bin mir überhaupt nicht sicher, was ich da verwenden kann oder soll und deshalb bräuchte ich ein Beispiel, wie ich das obige lösen kann und wäre deshalb sehr dankbar, wenn ihr mir da weiterhelfen könntet,

Vielen Dank nochmal,
Beste Grüße,
 
M

maki

Gast
Es gibt Millionen Tutorials, Dokus, Wikis, How-Tos. etc. pp. zu diesem Thema.

Anstatt diese zu suchen & zu lesen Postest du in einem Javaforum "Gebt mir mal ein Beispiel, erklärt mir wie es geht"

Sorry, aber ein bisschen Eigeninitiative brauchst du schon, vor allem bei der SW Entwicklung.
 

MQue

Top Contributor
maki hat gesagt.:
Es gibt Millionen Tutorials, Dokus, Wikis, How-Tos. etc. pp. zu diesem Thema.

Anstatt diese zu suchen & zu lesen Postest du in einem Javaforum "Gebt mir mal ein Beispiel, erklärt mir wie es geht"

Sorry, aber ein bisschen Eigeninitiative brauchst du schon, vor allem bei der SW Entwicklung.


Das ist ja mal eine Hilfe,
diese Meldung verdient wahrlich ein Dankeschön
 

FenchelT

Bekanntes Mitglied
Hallo Micha,

mal auf die Schnelle zusammengefasst:

Du hast als Beispiel zwei Tabellen (Tabelle_1 und Tabelle_2)

Nun moechtest Du Daten aus diesen beiden tabellen abfragen, wozu Du sie joinen muss.
Bis zur Oracle Version 8.1.7. unterstuetzte ORACLE den ANSI SQL join nicht, das heisst es war nur ein sog. Equal Join
moeglich, also ein Join in der Form

Code:
SELECT tabelle_1.feld, tabelle_2.feld
FROM tabelle_1, tabelle_2
WHERE tabelle_1.id = tabelle_2.id

Seit Version >8.1.7. wird auch der ANSI JOIN unterstuetzt, welchen ich dem Equal Join vorziehen wuerde
Syntax:

Code:
SELECT tabelle_1.feld, tabelle_2.feld
FROM tabelle_1 
INNEr JOIN tabelle_2 ON tabelle_1.id = tabelle_2.id

Warum bevorzuge ich diese Syntax? Ganz einfach. Moechtest Du Daten aus zwei "sehr grossen" tabellen selektieren und vergisst beim Equal JOIn diese beiden in der WHERE Bedingung zu joinen hast Du automatisch einen
CROSS JOIN, was eher suboptimal ist

Beim ANSI JOIN kannst Du es nicht vergessen.


Nun musst Du Dir ueberlegen, ob Du nur die Datensaetze haben moechtest, die in beiden Tabellen vorhanden sind,
dann benutze einen INNER JOIN

Moechtest Du stattdessen auf jeden Fall alle Daten aus Tabelle_1 und aus Tabelle_2 die Datensaetze, sofern vorhanden, benutzt Du einen OUTER JOIN; ob jetzt LEFT oder RIGHT haengt davon ab, aus welcher Tabelle Du alle Daten benoetigst.

Und wenn Du jetzt auch noch eine dritte Tabelle benoetigst, ja dann, joinst Du sie halt auch dazu.

Code:
SELECT tabelle_1.feld, tabelle_2.feld
FROM tabelle_1 
INNEr JOIN tabelle_2 ON tabelle_1.id = tabelle_2.id
INNEr JOIN tabelle_3 ON tabelle_1.id = tabelle_3.id

Und fuer eine vierte Tabelle


Code:
SELECT tabelle_1.feld, tabelle_2.feld
FROM tabelle_1 
INNEr JOIN tabelle_2 ON tabelle_1.id = tabelle_2.id
INNEr JOIN tabelle_3 ON tabelle_1.id = tabelle_3.id
INNEr JOIN tabelle_4 ON tabelle_2.id = tabelle_4.id

Du kannst die JOINS auch miteinander kombinieren, bist also nicht gezwungen alles mit einem INNER JOIN zu verbinden.

Beispiel:

Code:
SELECT tabelle_1.feld, tabelle_2.feld
FROM tabelle_1 
INNEr JOIN tabelle_2 ON tabelle_1.id = tabelle_2.id
LEFT JOIN tabelle_3 ON tabelle_1.id = tabelle_3.id
RIGHT JOIN tabelle_4 ON tabelle_2.id = tabelle_4.id

Ich hoffe nun, das hilft die auf die SCHNELLE erstmal weiter
 

MQue

Top Contributor
@ Ich hoffe nun, das hilft die auf die SCHNELLE erstmal weiter

hat super hingehaun, der INNER JOIN sitzt jetzt bei mir,

bin jetzt grad am werken für die Stored Procedure, mal schaun ob ich die mit RTFM hinbekomme, ansonsten hoffe ich, dass ich euch nochmal belästigen darf,
beste Grüße,
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J SELECT Abfrage/Suche Datenbankprogrammierung 4
D JDBC insert mit select abfrage Datenbankprogrammierung 5
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
S Insert mit Select Datenbankprogrammierung 6
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
L PostgreSQL Abfrage mit EclipseLink Datenbankprogrammierung 7
S Berechnung des Datumsunterschieds in der SQL-Abfrage Datenbankprogrammierung 1
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
nonickatall MySQL SQL Abfrage erneut ausführen oder rs aktualisieren Datenbankprogrammierung 14
Kirby.exe Verständnisproblem bei SQL Abfrage Datenbankprogrammierung 27

Ähnliche Java Themen

Neue Themen


Oben