phpbar.de logo

Mailinglisten-Archive

[dbs] Problemstellung beim Einfügen: INSERT oder UPDATE? Wie SELECTen?

[dbs] Problemstellung beim Einfügen: INSERT oder UPDATE? Wie SELECTen?

Sebastian Mendel lists at sebastianmendel.de
Mit Mar 31 09:41:57 CEST 2004


Nico Haase wrote:

> mir stellen sich zur Zeit einige Probleme mit MySQL-Tabellen in den Weg. Ich habe in einer Tabelle 'buecher' Rezensionen zu Büchern gespeichert. In einer zweiten Tabelle 'amazon' sollen spezifischere Informationen über die Bücher mit Hilfe der Amazon WebServices gecacht werden. Nun habe ich in der Tabelle 'buecher' das Feld 'isbn', welches zugleich in der Tabelle 'amazon' der Hauptindex ist. Wie kann ich nun abfragen, ob zur ISBN in 'buecher' schon der Wert 'isbn' in Amazon existiert? Das müsste, wenn möglich, direkt in einem Gesamt-SELECT gehen, also "SELECT * FROM buecher, amazon WHERE buecher.isbn = amazon.isbn" - das würde aber doch, wenn die ISBN in der Tabelle 'amazon' nicht existiert, ein leeres Ergebnis zurückliefern, weil die Verknüpfung fehlschlägt. Wie kann ich das unterbinden?

ja ein wenig LEFT JOIN, wie Peter schon schrieb, und ISNULL() liefert 
dir die in der `buecher` aber nicht in der `amazon` vorhandenen ISBNs

http://www.mysql.com/doc/en/Comparison_Operators.html#IDX1201


> Und nun mein zweites Problem, welches das erste gleich einbaut: Zum Updaten des Caches müssen aus 'buecher' alle ISBN ausgelesen werden, die in 'amazon' noch keinen Gegenpartner haben. Das geht ja dann problemlos, wenn das erste Problem gelöst ist - oder?

die kannst du ja dann ganz einfach mit dem obigen Ergebnis füllen
entweder mit zwei Querys oder ab MySQL 4.1 mit einem Query und Subselects

http://www.mysql.com/doc/en/Subqueries.html


-- 
Sebastian Mendel

info at sebastianmendel.de

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

php::bar PHP Wiki   -   Listenarchive