Hi,
folgende joins sind ja inner joins:
cross join
equi join
natural join
inner join
der Natural join:
Alle gleichnamigen Spalten verschiedener Tabellen werden verglichen. Die Werte in diesen Spalten werden sodann auf Gleichheit bzw. Übereinstimmung geprüft. Im Anschluss daran werden zusätzlich noch doppelte Spalten eliminiert. Stimmen keine Spalten überein, so wird ein Cross Join durchgeführt. Natural Join überprüft nur auf Gleichheit.
der Equi join:
Beim Equi Join werden nur explizit angegebene Spalten verglichen.Die Werte in diesen Spalten werden sodann auf Übereinstimmung geprüft. Doppelte Spalten werden nicht Eliminiert. Werden explizit keine Spalten angegeben, so wird ein Cross Join durchgeführt. Der Equi Join überprüft, wie der Name schon sagt, nur auf Gleichheit.
Jetzt meine Frage, da ich hier leider nur mysql und kein oracle habe, kann ich das schlecht selber überprüfen:
Müssen die Spaltennamen beim Equi join genau wie beim Natural join auch übereinstimmen? oder wird beim equi join nur der inhalt der beiden angegeben
spalten auf gleichheit geprüft? die Spaltennamen dürfen jedoch differgieren?
also z.b.
t1 (name, c1)
t2 (name, c2)
Select * from t1 natural join t2; -> es werden die spalten t1.name und t2.name
verglichen
Select * from t1 equi join t2 on t1.name = t2.name -> hat den selbigen effekt, es werden auch nur diese beiden spalten auf gleichheit überprüft.
Ist aber jetzt folgendes möglich?
Select * from t1 equi join t2 on t1.c1 = t2.c2
So weit ich weiss, ist dies beim Inner join auf jedenfall möglich! Zumindestens
ist es so in mysql implementiert. Desweiteren kann man beim inner join ja auch auf != und > und < testen und nicht nur auf Gleichheit.
VIelen dank für eure Hilfe!
Gruß Mentor
folgende joins sind ja inner joins:
cross join
equi join
natural join
inner join
der Natural join:
Alle gleichnamigen Spalten verschiedener Tabellen werden verglichen. Die Werte in diesen Spalten werden sodann auf Gleichheit bzw. Übereinstimmung geprüft. Im Anschluss daran werden zusätzlich noch doppelte Spalten eliminiert. Stimmen keine Spalten überein, so wird ein Cross Join durchgeführt. Natural Join überprüft nur auf Gleichheit.
der Equi join:
Beim Equi Join werden nur explizit angegebene Spalten verglichen.Die Werte in diesen Spalten werden sodann auf Übereinstimmung geprüft. Doppelte Spalten werden nicht Eliminiert. Werden explizit keine Spalten angegeben, so wird ein Cross Join durchgeführt. Der Equi Join überprüft, wie der Name schon sagt, nur auf Gleichheit.
Jetzt meine Frage, da ich hier leider nur mysql und kein oracle habe, kann ich das schlecht selber überprüfen:
Müssen die Spaltennamen beim Equi join genau wie beim Natural join auch übereinstimmen? oder wird beim equi join nur der inhalt der beiden angegeben
spalten auf gleichheit geprüft? die Spaltennamen dürfen jedoch differgieren?
also z.b.
t1 (name, c1)
t2 (name, c2)
Select * from t1 natural join t2; -> es werden die spalten t1.name und t2.name
verglichen
Select * from t1 equi join t2 on t1.name = t2.name -> hat den selbigen effekt, es werden auch nur diese beiden spalten auf gleichheit überprüft.
Ist aber jetzt folgendes möglich?
Select * from t1 equi join t2 on t1.c1 = t2.c2
So weit ich weiss, ist dies beim Inner join auf jedenfall möglich! Zumindestens
ist es so in mysql implementiert. Desweiteren kann man beim inner join ja auch auf != und > und < testen und nicht nur auf Gleichheit.
VIelen dank für eure Hilfe!
Gruß Mentor
Comment