Flori Geschrieben 1. Juni 2005 Teilen Geschrieben 1. Juni 2005 Hallo zusammen, da ich inzwischen vielleicht den Wald vor lauter Bäumen sehe (weil zuviel probiert), wende ich mich mal ans Forum...vielleicht is da noch jemand frei im Kopf für das was ich gerne aus meiner DB abfragen möchte. Habe zwei Tabellen: A) responsibles contacts In Tabelle A steht drin (z.B.) projectid - coordinator - developer 76 - 1 - 3 77 - 1 - 78 - 1 - 3 Tabelle B: contactid - name 1 - Paul 2 - Peter 3 - Karl Und ich möchte nun als Ergebnis meines SQL, daß die ID's in der Tabelle A durch die jeweiligen Namen ersetzt werden. Auch wenn dort wie im Beispiel das Feld "developer" einmal leer sein sollte. Also folgendermaßen soll der Output aussehen: 76 - Paul - Karl 77 - Paul - 78 - Paul - Karl Leider komme ich bisher nur soweit, daß ich lediglich die Datensätze erhalte, bei denen sowohl "coordinator" als auch "developer" gefüllt sind. Den Datensatz Nr. 77 schmeißts immer raus. :-/ Weiß jemand wie ich die Bedingungen im WHERE mit AND und/oder OR setzen muß, damit ich das Ergebnis so wie oben bekommen kann. Oder ist das vielleicht gar nicht so möglich wie ich das vorhabe? :confused: Vielen Dank für hilfreiche Tipps im Voraus!!! Grüße an alle Flori Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Maulwurf_der_Schlaue Geschrieben 1. Juni 2005 Teilen Geschrieben 1. Juni 2005 kannst du mal den sql-query posten den du bereits hast? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 1. Juni 2005 Teilen Geschrieben 1. Juni 2005 Probier das mal, ist allerdings nicht getestet... Und ich weiss nicht, welches DBMS Du benutzt...oder ich habs überlesen SELECT res.projectid, con1.name AS coordinator, con2.name AS developer FROM responsibles AS res LEFT JOIN contacts AS con1 ON con1.contactid=res.coordinator LEFT JOIN contacts AS con2 ON con2.contactid=res.developer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Flori Geschrieben 1. Juni 2005 Autor Teilen Geschrieben 1. Juni 2005 Also bislang habe ich folgendes SQL-Statement: SELECT projectid,contacts.name,con.name FROM responsibles,contacts,contacts AS con WHERE responsibles.projectid>75 AND coordinator=contacts.contactid AND developer=con.contactid Dieses ergibt folgendes Ergebnis: 75 - Paul - Karl 77 - Paul - Karl Wie man sieht, fehlt mir hierbei aber die 76, da dort ja das Feld "developer" NULL ist. Und wie man den Datensatz jetzt auch noch mit abfragt...da komm ich halt nich so recht weiter momentan.... :-/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 1. Juni 2005 Teilen Geschrieben 1. Juni 2005 Jo, genau da sollte ein (oder zwei) LEFT-Join(s) helfen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Flori Geschrieben 1. Juni 2005 Autor Teilen Geschrieben 1. Juni 2005 Hm, dankeschön für die prompte Hilfe schon mal. Brauche das ganze für eine Access-Datenbank (hätte ich vielleicht mal dabei sagen sollen). Das mit dem LEFT JOIN leuchtet mir auf jeden Fall ein! Allerdings gibt mir der Ausdruck SELECT res.projectid, con1.name AS coordinator, con2.name AS developer FROM responsibles AS res LEFT JOIN contacts AS con1 ON con1.contactid=res.coordinator LEFT JOIN contacts AS con2 ON con2.contactid=res.developer eine Fehlermeldung zurück : Syntaxfehler (fehlender Operator) in Abfrageausdruck 'con1.contactid=res.coordinator LEFT JOIN contacts AS con2 ON con2.contactid=res.developer' Wie sähe das mit den zwei LEFT JOINs aus für eine Lösung in Access 2000 ? Danke nochmal ! Grüße Flori Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 1. Juni 2005 Teilen Geschrieben 1. Juni 2005 So, da habe ich mal gerade (zum ersten Mal oder so) ne Abfrage in Access im Entwursmodus gemacht ... Hier das Ergebnis: SELECT responsibles.projectid, contacts.name, contacts_1.name FROM contacts AS contacts_1 RIGHT JOIN (contacts RIGHT JOIN responsibles ON contacts.contactid = responsibles.coordinator) ON contacts_1.contactid = responsibles.developer; Wenn man einen Rechtsklick auf die Beziehungslinien zwischen den Tabellen macht, dann kann man bei Verknüpfungseinstellungen einstellen, welche Art JOIN benutzt werden soll... - Monty Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 2. Juni 2005 Teilen Geschrieben 2. Juni 2005 @Flori: Aliase fuer Tabellen werden ohne AS deklariert gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Cleo Geschrieben 3. Juni 2005 Teilen Geschrieben 3. Juni 2005 geht normaleweise beides.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 3. Juni 2005 Teilen Geschrieben 3. Juni 2005 in access vielleicht .... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Flori Geschrieben 7. Juni 2005 Autor Teilen Geschrieben 7. Juni 2005 in access vielleicht .... Nicht nur in Access. IMHO gehört das "AS" im Gegensatz zu vielen anderen Dialekten der einzelmen DBMS zum SQL-Standard. Auf jeden Fall kannst du die Aliase wie Cleo schon sagte, je nach Belieben mit AS oder ohne AS definieren, z.B. in Access, Informix, MySQL...um nur drei zu nennen. @Monty82 & all others Vielen Dank nochmal für eure Hilfe. Als ich Eure Antworten gesehen hab, fiel endlich der Groschen wieder. *vor die Stirn schlag* Manchmal kann so'n Assistent mit Klick-Klick wie bei Access doch recht nützlich sein, gell. Hatte die Abfrage in Informix begonnen; da klappte es simpel mit nem OUTER und dann hatte ich halt probiert in Access (weil ich von Access zu Informix möchte via ODBC) und da gabs halt kein OUTER mehr. Dafür LEFT und RIGHT JOIN....tja, hätt ich mal nich probiert, mir selbst eins zu basteln via SQL, sondern direkt den Rechtsklick auf die Verbindung gemacht...*g* So klappts auf jeden Fall jetzt erste Sahne! Bis zum nächsten SQL-Statement. Viele Grüße Flori Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.