Tabellen verknüpfen

nox

Erfahrenes Mitglied
Hy Leutz

wie kann ich z.B 2 Tabellen zu einer tabelle verknüpfen?

ich hab folgende Tabellen:

haupttabelle:
Tabelle1
-> datum|anlass|spalte3

Tabelle2
-> datum|anlass|apfel3

Tabelle3
-> datum|anlass|regenwurm3

ich möchte am schluss nur aus der Tabelle die Felder datum|anlass haben...

die Tabellen sollen nur verknüpft werden nicht kopiert...

greez

n
o
x
 
hi nox :-)

na die frage ist jedenfalls besser gestellt die erste version, die hatte ich ja falsch verstanden :-)

ich gehe mal davon aus das das datumsfeld der gemeinsame nenner ist
und die anlässe verschieden sind :

ok:

select a.datum,a.anlass,b.anlass,c.anlass from tab1 as a left join tab2 as b on a.datum=b.datum left join tab3 as c on a.datum=c.datum
 
hy melmager

jo fast...
das datum ist aber nicht das gleiche jweils...

=> ich möchte von 3 verschiedenen therminkalender-tabellen die daten zu einer verknüpfen...
damit ich die daten nicht jedesmal 3mal eingeben muss... ;)

select a.datum, b.datum, c.datum, a.anlass, b.anlass, c.anlass from tab1 as a left join tab2 as b left join tab3 as c

hä blick nicht durch... :(
 
aha
also wenn es in den drei tabellen kein gemeinsames feld mit gleichen inhalt gibt hilft nur ein normaler join (crossjoin)

select a.datum,a.anlass,b.datum,b.anlass,c.datum,c.anlass from tab1 as a join tab2 as b join tab3 as c where a.datum is not null and b.datum is not null and c.datum is not null

ich gebe zu bedenken das da eine riesen menge von daten entstehen ! wenn nix gemeinsames in den tabellen existiert ist es besser 3 einzelabfragen zu machen ...

wenn du pro tabelle 100 datensätze hast:
100 mal 100 mal 100 = 1.000.000 datensätze kommen da raus !!

damit ich die daten nicht jedesmal 3mal eingeben muss...

welche daten ?????
 
Zuletzt bearbeitet:
hmm

wenn du pro tabelle 100 datensätze hast:
100 mal 100 mal 100 = 1.000.000 datensätze kommen da raus !!

warum sollen da 1mio. datensätzte rauskommen wenn ich im gesamten doch nur 300 datensätze hab...?
-> leuchtet mir nicht ein!

damit ich die daten nicht jedesmal 3mal eingeben muss...
welche daten ?????
-> soviel zum rechnen...
-> jedesmal 2mal einge...
Ps.: dies währe eine absolut blöde lösung!

wenn nix gemeinsames in den tabellen existiert ist es besser 3 einzelabfragen zu machen ...
gefällt mir nicht ;)
und sieht unsauber aus... :-)
 
wir reden aneinander vorbei

im moment fragst du ja nur daten ab und du hattes was davon gesagt das du daten eingeben müsstes da habe ich halt gefragt welche daten :-)

wenn du ein
select datum,annlass from tab1
machst listet er dir die ganze db auf und es wurden keine daten eingegeben...

dann kommen wir mal zu den grundlagen von joins und warum es soviel daten gibt:

taba
id | inhalt
1 a
2 b
3 c

tabb
id | inhalt
4 d
5 e
6 f

hier mal ne kurzversion 2 tabellen mit jeweils 3 datensätzen
bei einem crossjoin wird der erste datensatz mit allen datensätzen der zweiten tabelle verküpft , dann der zweite datensatz der taba mit allen datensätzen der tabb usw also eine mutiplikation findet statt und nicht eine addition
3 * 3 datensätze = 9 ergebnisse

select * from taba join tabb

dann kommt:
1 a 4 d
1 a 5 e
1 a 6 f
2 b 4 d
2 b 5 e
2 b 6 f
3 c 4 d
3 c 5 e
3 c 6 f

-------------------------------

also im moment sieht es für mich so aus das du einfach nur alle datensätze der drei tabellen ausgeben möchtes und das macht man am einfachsten mit 3 abfragen


ps

http://www.mut.de/media/buecher/SQL/data/start.htm

mal lesen ... ( am besten gleich nach verknüpfung hüpfen *g*
 
Zuletzt bearbeitet:
nach kurzem skiurlaub meld ich mich jetzt wieder zurück.... ;)

@melmager

thx für deine aufklährende rechnung... 3+3=9 ÄÄH 3*3=9 lool ich glaubs dir
=> aber so richtig kapieren tu ichs nicht....
wenn ich dies mal progge dann werd ich es sicher noch früh genug verstehen ;)

-----------

du bist in dem fall der meinung, alle drei tabellen abzufragen...
ist zwar in meinen unerfahrenen augen nicht gerade schön aber was solls... ;)

greez

n
o
x
 
Zurück