Mailinglisten-Archive |
hallo, hier unten die SQL-befehle, die z.B. auf FoxPro gut laufen und genau das machen, was ich möchte (mit geringen sysntaktischen änderungen, z.b. anstatt INSERT INTO tmp SELECT ... heisst es dort SELECT ... INTO CURSOR tmp). man beachte, dass mein ziel die erstellung der (temporären) tabelle tmp ist, die ich unmittelbar nach der durchführung der u.g. sql-statements für die datenausgabe benutzen möchte. deswegen erwog ich die durchführung mittels system(), weil system() SEHR schnell arbeitet. so z.b.: $op=system(...einlesen und durchführen der u.g. SQL statements); $db = mysql_connect($dbserver, $user, $pw); mysql_select_db($dbfile,$db); $query = "SELECT * FROM tmp"; $result = mysql_query($query,$db); while ($myrow = mysql_fetch_row($result)) { echo "$myrow[0],$myrow[1],$myrow[2]<BR>\n"; undsoweiter; undsofort; etcetera; } liegt mein denkfehler darin, dass die temporären tables, die mittels system() erstellt werden, bei der neuen connection erlöschen? ich befürchte JA. aber wie läßt man elegant und schnell diese u.g. reihe von "vorbereitenden" sql-befehlen einspeisen? danke! julián daniel ************************************************************ ************************************************************ *** begin of query.sql CREATE TEMPORARY TABLE IF NOT EXISTS tmp_ids; CREATE TEMPORARY TABLE IF NOT EXISTS tmp11; CREATE TEMPORARY TABLE IF NOT EXISTS tmp12 CREATE TEMPORARY TABLE IF NOT EXISTS tmp21; CREATE TEMPORARY TABLE IF NOT EXISTS tmp22; CREATE TEMPORARY TABLE IF NOT EXISTS tmp31; CREATE TEMPORARY TABLE IF NOT EXISTS tmp32; CREATE TEMPORARY TABLE IF NOT EXISTS tmp41; CREATE TEMPORARY TABLE IF NOT EXISTS tmp42; CREATE TEMPORARY TABLE IF NOT EXISTS tmp51; CREATE TEMPORARY TABLE IF NOT EXISTS tmp52; CREATE TEMPORARY TABLE IF NOT EXISTS tmpxx1; CREATE TEMPORARY TABLE IF NOT EXISTS tmpxx2; CREATE TEMPORARY TABLE IF NOT EXISTS tmpxx3; CREATE TEMPORARY TABLE IF NOT EXISTS tmpxx4; CREATE TEMPORARY TABLE IF NOT EXISTS tmpxx5; CREATE TEMPORARY TABLE IF NOT EXISTS tmp; INSERT INTO tmp_ids SELECT DISTINCT id_item FROM item_main WHERE status LIKE 'JA'; INSERT INTO tmp11 SELECT a.id_item, 1 as erfolg1, MAX((12-2*value)) as bew1 FROM tmp_ids a JOIN item_hw b ON a.id_item=b.id_item WHERE id_form=5042 AND value>0 GROUP BY b.id_item; INSERT INTO tmp12 SELECT a.id_item, 0 as erfolg1, 0 as bew1 FROM tmp_ids a LEFT JOIN tmp1 b ON a.id_item=b.id_item WHERE b.id_item <1; INSERT INTO tmpxx1 SELECT * FROM tmp11; INSERT INTO tmpxx1 SELECT * FROM tmp12; DROP TABLE tmp11; DROP TABLE tmp12; INSERT INTO tmp21 SELECT a.id_item, 1 as erfolg2, MAX((12-2*value)) as bew2 FROM tmp_ids a JOIN item_bs b ON a.id_item=b.id_item WHERE id_form=3056 AND value>0 GROUP BY b.id_item; INSERT INTO tmp22 SELECT a.id_item, 0 as erfolg2, 0 as bew2 FROM tmp_ids a LEFT JOIN tmp2 b ON a.id_item=b.id_item WHERE b.id_item <1; INSERT INTO tmpxx2 SELECT * FROM tmp21; INSERT INTO tmpxx2 SELECT * FROM tmp22; DROP TABLE tmp21; DROP TABLE tmp22; INSERT INTO tmp31 SELECT a.id_item, 1 as erfolg3, MAX((12-2*value)) as bew3 FROM tmp_ids a JOIN item_bs b ON a.id_item=b.id_item WHERE id_form=3061 AND value>0 GROUP BY b.id_item; INSERT INTO tmp32 SELECT a.id_item, 0 as erfolg3, 0 as bew3 FROM tmp_ids a LEFT JOIN tmp3 b ON a.id_item=b.id_item WHERE b.id_item <1; INSERT INTO tmpxx3 SELECT * FROM tmp31; INSERT INTO tmpxx3 SELECT * FROM tmp32; DROP TABLE tmp31; DROP TABLE tmp32; INSERT INTO tmp41 SELECT a.id_item, 1 as erfolg4, MAX((12-2*value)) as bew4 FROM tmp_ids a JOIN item_ps b ON a.id_item=b.id_item WHERE id_form=4012 AND value>0 GROUP BY b.id_item; INSERT INTO tmp42 SELECT a.id_item, 0 as erfolg4, 0 as bew4 FROM tmp_ids a LEFT JOIN tmp4 b ON a.id_item=b.id_item WHERE b.id_item <1; INSERT INTO tmpxx4 SELECT * FROM tmp41; INSERT INTO tmpxx4 SELECT * FROM tmp42; DROP TABLE tmp41; DROP TABLE tmp42; INSERT INTO tmp51 SELECT a.id_item, 1 as erfolg5, MAX((12-2*value)) as bew5 FROM tmp_ids a JOIN item_ps b ON a.id_item=b.id_item WHERE id_form=4013 AND value>0 GROUP BY b.id_item; INSERT INTO tmp52 SELECT a.id_item, 0 as erfolg5, 0 as bew5 FROM tmp_ids a LEFT JOIN tmp5 b ON a.id_item=b.id_item WHERE b.id_item <1; INSERT INTO tmpxx5 SELECT * FROM tmp51; INSERT INTO tmpxx5 SELECT * FROM tmp52; DROP TABLE tmp51; DROP TABLE tmp52; INSERT INTO tmp SELECT a.id_item, erfolg1,bew1,erfolg2,bew2,erfolg3,bew3,erfolg4,bew4,erfolg5,bew5, erfolg1+erfolg2+erfolg3+erfolg4+erfolg5 as erfolg, bew1+bew2+bew3+bew4+bew5 as bew_sum FROM tmpxx1 a JOIN tmpxx2 b ON a.id_item=b.id_item JOIN tmpxx3 c ON b.id_item=c.id_item JOIN tmpxx4 d ON c.id_item=d.id_item JOIN tmpxx5 e ON d.id_item=e.id_item ORDER BY bew_sum DESCEND; DROP TABLE tmpxx1; DROP TABLE tmpxx2; DROP TABLE tmpxx3; DROP TABLE tmpxx4; DROP TABLE tmpxx5; **** end of query.sql -----Ursprüngliche Nachricht----- Von: Patrick Bierans [mailto:pbierans_(at)_lynet.de] Gesendet: Donnerstag, 8. März 2001 12:36 An: mysql-de_(at)_lists.4t2.com Betreff: Re: SQL-Statementsreihe in PHP. WAS: UNION - emulation > 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. Es gibt mehrere Arten von Tables. Schau mal genauer im Manual nach: http://www.mysql.com/doc/C/R/CREATE_TABLE.htm Stay cool, don't close the fridge P.Bierans --- *** 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