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
