View Full Version : Verbinden 2er Tabellen
Hallo!
Ich habe 2 Tabellen, die als gleichen Wert "Name" haben. Die wollte ich nun folgendermaßen verbinden im interaktiven SQL:
select *from Bibliothek.Teildatei1, Bibliothek.Teildatei2 order by Bibliothek.Teildatei.spaltenname3
Fehler: Qualifizierter Objektname Teildatei2 nicht gültig.
aber das geht nicht; das geht nicht mal wenn ich alles ab "Order by" weglass.... wie verbinde ich die beiden Tabellen denn dann?
Laut meiner Quelle brauch ich dafür noch kein JOIN, oder?
Wenn du
select * from Datei1, Datei2
angibst, ist das ein sog. Cross-Join, da jeder Satz aus Datei1 mit jedem Satz aus Datei2 verknüpft wird.
Du musst schon eine Beziehung herstellen:
select * from Datei1 A, Datei2 B
where a.key = b.key
was im Übrigen das Selbe ist wie
select * from Datei1 A
inner join Date2 B on a.key=b.key
Ansonsten:
Wie ich auf Grund deiner Fragen sehe, erwartest du von diesem Forum eine Grundkurs in SQL.
Dies sprengt allerdings den Rahmen hier.
Ich würde die mal ein SQL-Handbuch empfehlen:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/sqlp/rbafyprintthis.htm
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzatc/rzatcprintable.htm
Danke für die Hilfe.
Aber um das mal klar zu stellen: ich erwarte hier GAR nichts, und freu mich über jede Antwort, die ich kriege.
Handbücher hab ich hier liegen:
SQL in 21 Tagen,
SQL Server 2000
SQL Server 2000 in 21 Tagen.
Das hilft zwar weiter aber nicht im Hinblick auf die iSeries.
Sorry,ich wußte nicht,das ihr solche "Popelfragen" nicht beantworten wollt sondern hauptsächlich den Profis helfen wollt (aber auch die haben mal klein angefangen).
Will natürlich nicht weiter die Leitung blockieren.
kuempi von stein
10-08-06, 13:37
...Handbücher hab ich hier liegen:
SQL in 21 Tagen,
SQL Server 2000
SQL Server 2000 in 21 Tagen.
Das hilft zwar weiter aber nicht im Hinblick auf die iSeries.
....
Joo,
dann solltest Du Dir bei Gelegenheit auch noch folgendes antun:
SQL Reference (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/db2/rbafzmst.pdf)
SQL Programming (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/sqlp/rbafy.pdf)
SQL messages and codes (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzala/rzala.pdf)
kuempi
Zusatz mal wieder:
Ich seh gerade, dass Fuerchau die links ja schon angegeben hatte.
Sowas... Lesen sollte man schon können sagte Werner immer...
:-)
Sicher werden hier auch "Popel"-Fragen beantwortet, geklärt, diskutiert u.v.m.
Jedoch gibt es hier keine Schulungen. Es gibt schließlich Leute, die sich damit ihren Lebensunterhalt verdienen.
Aber wie gesagt, den Link auf die Handbücher hast du nun ja. Schau dir diese mal in Ruhe an und frag dann erneut.
So groß ist der Unterschied zwischen SQL-Server und DB2/UDB nun auch wieder nicht.
Hallo,
beim starten der interaktiven SQL Sitzung (und nicht nur da) gibt es einen Parameter naming und der steht im default auf *SYS und damit hat man einen grauseligen Dialekt von SQL vor sich (selbiger kennt den Punkt nicht als qualifier zwischen Schema und Tabelle und will da einen Schlapp). Wenn du NAMING auf *SQL stellst wird dir einiges erleichtert.
mfg
Dieter Bender
Hallo!
Ich habe 2 Tabellen, die als gleichen Wert "Name" haben. Die wollte ich nun folgendermaßen verbinden im interaktiven SQL:
select *from Bibliothek.Teildatei1, Bibliothek.Teildatei2 order by Bibliothek.Teildatei.spaltenname3
Fehler: Qualifizierter Objektname Teildatei2 nicht gültig.
aber das geht nicht; das geht nicht mal wenn ich alles ab "Order by" weglass.... wie verbinde ich die beiden Tabellen denn dann?
Laut meiner Quelle brauch ich dafür noch kein JOIN, oder?
Wenn man sich das Naming per F13->Auswahl 1 einmal einstellt, bleibt es AN DIESEM BILDSCHIRM solange unverändert, bis man es mit diesem Methode wieder ändert, und zwar unabhängig davon, was man beim STRSQL angibt.
@Dieter
Mit *SYS arbeitet man auf der AS/400 eigentlich am häufigsten um mit unqualifizierten SQL's (und nicht unqualifizierten Authoren) die *LIBL zu verwenden.
Gerade das ist ja der "Vorteil", da ja sonst in allen Programmen IMMER qualifiziert werden müsste (obwohl: im Dialog wäre das beim UPDATE/DELETE wohl des öfteren sinnvoll).
Wenn ich mit z.B. SQL-Server arbeite stellt sich das Problem nicht, da hier die Qualifizierung eher unnötig ist.
Ich kann mich ja eh nur mit einer Datenbank verbinden.
... wenn man mit speichern raus geht und bis auf ein paar Wackelfälle, wenn man mehrere SQL Sessions parallel betreibt. Ich würde da raten, dass man (gerade wenn man anfängt) da alles auf SQL Standard trimmt:
create Schema (damit Journale automatisch erstellt werden und alles neue per SQL erstellte journalisiert wird)
immer mit naming *SQL arbeiten (dann gibt es keine Änderungsproblematik)
zur Qaulifizierung: der SQL Standard verwendet das private Schema (= USER) solange kein default Schema gesetzt wird (beim Connect oder mit set default schema).
@Baldur: das mit der libl, das ist doch wohl für eine relationale Datenbank Dummfug von der dummfugigsten Sorte; da habe ich eine Datenbank, die referentielle Integrität überwacht (wenn man das hoffentlich so erstellt) und dann sage ich schau mal in welchem Schema du eine Tabelle findest und es ist mir auch völlig Wurscht ob der Auftrag völlig woanders (z.B.: QTEMP)geändert wird, wie die Lagerbuchung und sage mir nicht, dass das noch nicht passiert wäre!!!
mfg
Dieter Bender
Wenn man sich das Naming per F13->Auswahl 1 einmal einstellt, bleibt es AN DIESEM BILDSCHIRM solange unverändert, bis man es mit diesem Methode wieder ändert, und zwar unabhängig davon, was man beim STRSQL angibt.
@Dieter
Mit *SYS arbeitet man auf der AS/400 eigentlich am häufigsten um mit unqualifizierten SQL's (und nicht unqualifizierten Authoren) die *LIBL zu verwenden.
Gerade das ist ja der "Vorteil", da ja sonst in allen Programmen IMMER qualifiziert werden müsste (obwohl: im Dialog wäre das beim UPDATE/DELETE wohl des öfteren sinnvoll).
Wenn ich mit z.B. SQL-Server arbeite stellt sich das Problem nicht, da hier die Qualifizierung eher unnötig ist.
Ich kann mich ja eh nur mit einer Datenbank verbinden.
Siehst du, und deshalb werden wir so schnell nicht arbeitslos ;););)
Einmal muß ich noch nachhaken, weil mir das jetzt nicht ganz klar ist.
Bist du wirklich nur gegen das Naming auf *SQL weil es Mehrarbeit gedeutet?
Also ich hab das jetz umgestellt und siehe da, jetzt klappen meine schönen Joins (das Thema stand gestern auf dem Stundenplan :-), ich bin quasi begeistert und finde da jetz nix schlimmes dran-im Gegenteil, vorher wußte ich nicht wie ich es ohne Qualifizierung machen sollte (wie man ja gesehen hat).
Warum also so abgeneigt?