phpbar.de logo

Mailinglisten-Archive

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

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

AW: SQL-Statementsreihe in PHP. WAS: UNION - emulation



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 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive