Mailinglisten-Archive |
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