hallo alexander!

andreas roth hat erst k�rzlich ein gut erkl�rtes beispiel gepostet, JOINs
betreffend. mir hat es geholfen, vielleicht dir auch. ich bin so frei, dir
das mal hier zu schicken: :-)

In relationalen DBs hast du je mehrere Tabellen, die �ber Schl�sselwerte
verkn�pft sind zB.


                               Posten
               Rechnungen      -----------
     Kunden    ----------      ID
     ------    ID        <---- RechungenID
     ID    <---KundenID        LfdNummer
     Name      .               ProduktID
     Strasse   .               .
     .         .               .
     .                         .
     .

Ich nehme mal weiter an, die Constraints (die Pfeile) sind nicht dirket in
de rDatenbank verankert. Dann musst du, wenn du Daten aus beiden Tabellen
zeiehen willst, diese irgendwie verbinden. Das macht man mit dem INNER JOIN
Befehl.
Das sieht dann zB. So aus:

SELECT Kunden.Name FROM Kunden INNER JOIN Rechnungen ON Rechnungen.KundenID
= Kunden.ID INNER JOIN Posten ON Posten.RechnungenID = Rechnungen.ID WHERE
Posten.ProduktID = 1

jetzt w�rden dir alle Kunden angezeigt, die das Produkt 1 erworben haben.

Zuerst sagst du, was du willst und gibst ganz normal eine Tabelle an. Dann
schreibst du mit Inner Join die weiteren Tabellen (INNER JOIN Rechnungen)
und die Art, wie sie mit einer der bereits enthaltenen Tabellen verk�pft
sind (ON Rechnungen.KundenID = Kunden.ID)fest. Das machst du hier f�r
Rechnungen und danach f�r Posten.

Mal angenommen, wir trennen an anderer Stelle zwischen Lieferanten und
Kunden und habe alle in einer Tabelle Kontakte zusammengefasst:

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

  |                            Posten                           |
  |            Rechnungen      -----------                      |
  |  Kontakte  ----------      ID                               |
  |  ------    ID        <---- RechungenID     Produkte         |
   ->ID    <---KontakteID      LfdNummer       -----------      |
     Name      .               ProduktID------>ID               |
     Strasse   .               .               KontakteID-------
     .         .               .               Preis
     .                         .
     .

Dann kann es vorkommen, dass du wie Jutte eine Tabelle in 2 verschiedenen
zusammenh�ngen brauchst. Deshalb musst du 2 Joins f�r eine Tabelle (hier
Kontakte) definieren. Um die einzelnen Felder zu Unterscheiden, bei denen
der Tabellen Pr�fix ja dann gleich w�re, kann man einen neuen Namen
vergeben. Man schreibt den gew�nschten Namen einfach hinter den Join Befehl:

SELECT Kunden.Name FROM Kontakte Kunden INNER JOIN Rechnungen ON
Rechungen.KontakteID = Kunden.ID INNER JOIN Posten ON Posten.RechnungenID =
Rechnungen.ID INNER JOIN Produkte ON Posten.ProdukteID = Produkte.ID INNER
JOIN Kontakte Lieferanten ON Posten.KontakteID = Lieferanten.ID WHERE
Lieferanten.Name = "Otto"

um zum Beispiel alle Kunden zu erfahren, die Produkte des Zulieferers Otto
erhalten haben.



-----Urspr�ngliche Nachricht-----
Von: Alexander Husic [mailto:[EMAIL PROTECTED]]
Gesendet: Freitag, 14. Dezember 2001 13:26
An: ASP Diskussionsliste fuer Anfaenger
Betreff: [aspdebeginners] JOIN 2-ter Versuch


hallo liste,

ich war der verzeiflung nahe und musste eigentlich zwei tabellen
verkn�pfen. mein erster versuch das so zu erledigen:

SQL = "Select * From BBPROD WHERE BB_PROD_ID = " & strID & " AND LID
='"&sprache&"'" SQL = SQL & "Select * From LINK_S WHERE LSID = " & LSID
& " AND LID ='"&sprache&"'" Set RS = MyConn.Execute(SQL)

war wohl nicht die rechte idee.

Dann bekam ich den Tipp das dpch mal mit JOIN zu versuchen. Gut.... ich
habe das dann mal getan... das ist aber hemmunglos in die Hose gegangen.

SQL = "Select BBPROD.*, LINK_S.LID WHERE BBPROD.BB_PROD_ID = " & strID &
" AND BBPROD.LID ='"&sprache&"' INNER JOIN LINK_S ON BBPROD.LID =
LINK_S.LID WHERE LID ='"&sprache&"'" AND LSID = " & LSID
Fehlermeldung:

Laufzeitfehler in Microsoft VBScript- Fehler '800a000d'
Typen unvertr�glich: '[string: "Select BBPROD.*, LIN"]'
/bb/lay2/top1.asp, line 12


Mittlerweile habe ich das anders gel�st.... ist zwar nicht sch�n, ist
zwar nicht nett aber macht eigentlich das, was es soll. Da ich nun in
Zunkunft gerne doch etwas mehr �ber Join wissen w�rde, w�rde ich gerne
wissen was f�r einen "Mist" ich da verzapft habe.

Gr��e,
Alexander


| Oft Gefragtes: http://www.aspgerman.com/aspgerman/faq/
| [aspdebeginners] als [EMAIL PROTECTED] subscribed
| http://www.aspgerman.com/archiv/aspdebeginners/ = Listenarchiv
| Sie knnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdebeginners.asp


| Oft Gefragtes: http://www.aspgerman.com/aspgerman/faq/
| [aspdebeginners] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdebeginners/ = Listenarchiv
| Sie knnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdebeginners.asp

Antwort per Email an