Hallo,

SELECT Bestellung.BestellID, Bestellung.BestellKundenID,
Bestellung.BestellProduktID, Bestellung.BestellDatum,
Bestellung.BestellRabatt, Bestellung.BestellProduktpreis,
Bestellung.BestellProduktbezeichnung, Bestellung.BestellEinheitMenge,
Produkt.ProduktID, Produkt.ProduktBezeichnung, Produkt.ProduktPreis,
Produkt.ProduktKategorie
FROM Bestellung LEFT JOIN Produkt ON Bestellung.BestellProduktID =
Produkt.ProduktID;


Ich habe es also etwas sauberer versucht zu schreiben und das LEFT JOIN
richtig einzusetzen. Au�erdem habe ich es erst mal nur mit der Tabelle
Produkt und Bestellung versucht.

Produkte ist gef�llt,
Bestellung ist leer.

Der rest steht unten in Deiner Antwort......

> -----Urspr�ngliche Nachricht-----
> Von: Joachim van de Bruck [mailto:[EMAIL PROTECTED]]
> Gesendet: Montag, 4. Februar 2002 10:58
> An: ASP Datenbankprogrammierung
> Betreff: [aspdedatabase] AW: Join Problem
>
>
> Hallo!
>
> > Der komplette String ist wie folgt:
> >
> > SELECT Produkt.*, Angebotstag.*, Produktkategorie.*, Bestellung.*
> > FROM (Produktkategorie INNER JOIN (Produkt INNER JOIN Angebotstag ON
> > Produkt.ProduktID = Angebotstag.TagProduktID) ON
> > Produktkategorie.KategorieID = Produkt.ProduktKategorie) LEFT JOIN
> > Bestellung ON Produkt.ProduktID = Bestellung.BestellProduktID;
> >
> > Bitte �bersehe, da� ich von den ganzen Tabellen alle Datens�tze abrufe
> (*).
> > Ist im Moment nur Entwurf und werde es dann noch eingr�nzen.
>
> ;-)
>
> Allerdings wei� ich wegen der "*" nicht, was Du wirklich selektieren
> willst.


Ich habe die relevanten Felder nun ausgeschrieben....


>
> > Ich erhalte den Fehler "Fehlender Operator in Abfrageausdruck".
> > Habe es auch ohne der Where Klausel versucht .... selber Fehler....
> >
> > Das SQL hat mir im prinzip Access so zusammengebaut. Ich habe nur das
> inner
> > Join in Left Join ge�ndert.
> >
> > In der Doku hei�t es ja "schlie�t alle aus der Linken Tabell ein, auch
> wenn
> > keine �bereinstimmung besteht.
> > Wenn ich also LEFT JOIN Bestellung ..... schreibe dann ist ja
> Bestellung die
> > Linke oder?
>
> Bei "FROM Produkt LEFT JOIN Bestellung ON ..." steht Produkt links und
> Bestellung rechts. Links/Rechts bezieht sich auf die JOIN-Klausel,
> unabh�ngig davon, wie die Tabellen in "ON" verkn�pft werden.

Bestellung LEFT JOIN Produkt ....
Hei�t also inkludiere Bestellung unabh�ngig davon ob treffer in Produkt
vorhanden sind?

....Dachte ich ....
Denn das liefert keine Datens�tze zur�ck!

Umgekehrt:
Produkt LEFT JOIN Bestellung
...Liefert zwar die Produktdatens�tze, jedoch lassen sich die Bestellung'en
nicht inserten oder updaten.


>
> Aufgrund Deiner JOIN-Struktur kann ADO die Haupttabelle nicht eindeutig
> identifizieren. Deshalb wird auch ein UPDATE oder INSERT wahrscheinlich
> nicht funktionieren. Entweder gibst Du die Haupttabelle �ber die
> Property "UNIQUE TABLE") an, oder suchst nach einer Alternative. UPDATE
> und INSERT von Verkn�pfungen sind n�mlich eine Wissenschaft f�r sich:

"Wissenschaft" .... mann eh' bin doch kein Wissenschaftler :-(
"UNIQUE TABLE"?  habe dazu nichts in der T-SQL Hilfe gefunden was ich in
diesem Zusammenhang verstehe.

ABER: Wenn ich jetzt nur die Tabellen Bestellung und Produkt habe, dann kann
es ja keine Probleme mehr machen. Ist ja klar um welche es geht ....


>
> Solange es eine Haupttabelle gibt und die verkn�pften Tabellen nur einen
> Datensatz liefern (z. B. Fremdschl�sseltabellen) gibt es keine Probleme.

Ja. SO ist es ja. Die Haupttabelle ist Produkt und ich m�chte nun dazu die
Bestellung aufnehmen.
Die ganzen anderen Tabellen Angebotstag, Produktkategorie sind nur
Eingr�nzungen der Tabelle Produkt:
Also:
-Produktkategorie:
        Ich habe in der Tabelle Produkt einen Schl�ssel auf die Tabelle
ProduktKategorie.KategorieID
        die mir die Kategorie des Produktes geben soll, damit ich es anhand dieser
sortieren kann.
-Angebotstag:
        WHERE Angebotstag.TagMontag = true
        oder
        WHERE Angebotstag.TagDienstag = true
        usw. Das baue ich dann in ein Form_Load() ein jenachdem welcher Tag gerade
ist.


>
> Wenn Du aber einen Datensatz in der Haupttabelle hast, dem mehrere
> Datens�tze in der Untertabelle zugeordnet wird, musst Du schon ganz
> genau sagen, ob Du nur die Haupttabelle, oder die Haupttabelle und alle
> Unterdatens�tze oder die Haupttabelle und einen Datensatz der
> Untertabelle modifizieren willst. Dabei "hilft" Dir dann die "UNIQUE
> TABLE"-Property.

Ich will nur den einen Datensatz aus der Tabelle Produkt (oder eben alle
Produkte mit der WHERE klausel).


>
> Bei Deinem Recordset ist so nicht klar, ob Du die Produkte, die
> Produktgruppe oder die Bestellung modifizieren willst. Freundlicherweise
> bekommst Du also eine Fehlermeldung und keine unerw�nschten
> Modifikationen. ;-)

O.K. ich denke es ist ja jetzt klar da� ich NUR die BEstellung �ndern will.
Jetzt muss es nur noch ACCESS begreifen :-))


>
> Vielleicht ist es einfacher, wenn Du das mit einem hierarchischen
> Recordset l�st oder einige JOINs durch Sub-SELECTs ersetzt.


Kann ich mir gerade �berhaupt nicht vorstellen wie....

>
> Freundliche Gr��e
> Joachim van de Bruck
>
>


Gru� Mansur
>
>
> | [aspdedatabase] als [EMAIL PROTECTED] subscribed
> | http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
> | Sie k�nnen sich unter folgender URL an- und abmelden:
> | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp
>


| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an