phpbar.de logo

Mailinglisten-Archive

SQL-Statementsreihe in PHP. WAS: UNION - emulation
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SQL-Statementsreihe in PHP. WAS: UNION - emulation



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 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive