Mailinglisten-Archive |
Hallo, das untere problem hab ich schon gelöst, sofern mehrere INSERT INTO tmp SELECT * FROM A1; ... INSERT INTO tmp SELECT * FROM An; in mySQL bewirken, dass die datensätze in tmp sukzessiv (additiv) zugefügt werden, was ich noch nicht überprüfen konnte. Nun habe ich eine A4 Seite voll mit sql-statements, und will sie von einem PHP-script aus ausführen (diese reihe von SQL befehle sind die vorbereitung auf einer komplexeren DB-suche). zuerst dachte ich an: $op = system("mysql -h DBSERVER --password='PW' -u 'USER' 'DB' < 'query.sql'"); wobei query.sql eine textdatei ist mit den genannten SQL statements. ABER... system() wird zwar ausgeführt, $op "existiert" hinterher, aber wenn ich anschließend auf die TEMPORARY TABLE tmp zugreifen will, dann stelle ich fest, daß sie leer ist bzw. nicht existiert. Hiiiiiiiilffffffffffeeeeeeee!!!!!!!! wie macht man's richtig?????????????? :-) Dies ist bestimmt eine blöde anfängerfrage, aber bin halt neu im unfeld PHP-MySQL... vielen dank julián daniel ********************************************** ********************************************** ********************************************** -----Ursprüngliche Nachricht----- Von: Julian Daniel Jimenez Krause [mailto:krause_(at)_eportas.de] Gesendet: Mittwoch, 7. März 2001 15:34 An: mysql-de_(at)_lists.4t2.com Betreff: UNION - emulation hallo liste, nachdem ich in den f*** manuals gesucht und nicht gefunden habe, möchte ich hier eine frage stellen, um nicht stunden beim neuerfinden des rades zu verschwenden: - wie simuliert man am elegantesten den nicht unterstützten UNION teil in mysql queries? konkret geht's mir um folgendes: ich möchte eine OR / AND_IGNORE suche implementieren, die läuft über ca. 10 strukturell ähnliche (im grunde identische) jedoch inhaltlich unterschidliche tabellen. der user kann an jeder inhaltskategorie (spricht jeder tabelle) bedingungen stellen. dabei gehe ich wie folgt: ich evaluiere die subqueries und jeder record in jeder der tabelle erhält eine "bewertung", je nach dem, wie die bedingung getroffen wurde. dabei erstelle ich temporäre tabellen mit dieser information. ich "joine" die temporären tabellen (die liste aller verfügbaren record_id's wird links vorne mitgejoint) und addiere die bewertungen zu einer gesamt_bewertung. soweit sogut. nur: - bei plain join verhält sich das ganze wie eine AND verknüpfung, und nur die records, bei denen ALLE bedingungen irgendwie getroffen wurden, werden angezeigt. - bei left join verhält sich das ganze zwar wie OR, aber die spalten aus den subqueries, die leer geblieben waren, werden mit NULL ausgefüllt, und damit liefert die addition der teilbewertungen ebenfalls NULL für diejenigen records, was nicht meine vorstellung entspricht, denn ich möchte auch zulasen, dass für einen record z.b. eine subquery nicht erfüllt wurde und trotzdem eine gesamtbewertung für diesen record liefern. (nur die records, bei denen KEINE subquery erfolg hatte sollen mir vom leibe bleiben!) daher dachte ich mir: beim erstellen der temporären tabellen (aus den subqieries) tu ich diese mit der gesamtliste der record_id's vereinigen, wo die records, bei welchen die bedingung in keiner weise erfüllt wurde, mit bewertung=0 ausgefüllt werden... tja und genau dies ist meine frage -- wie mach ich das in mySQL *ohne* UNION ??? vielen dank! grüß aus düsseldorf julián daniel --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive